質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2083閲覧

[Angular] app.componentを介せず任意のコンポーネントを呼び出したい

MashuScott

総合スコア18

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/12/21 03:30

編集2019/12/21 03:34

[前置き]

Angularのsrc/appディレクトリ以下は概ね以下のような感じになっており、仮にa.component.tsをsrc内のindex.htmlに表示させたい時、チュートリアルではまずapp.component.htmlに読み込んでからindex.htmlに表示させます。

PATH

1 2src 3├── index.html 4└── app 5 6app/ 7├── b/ 8│ └── b.component.ts 9├── a/ 10│ └── a.component.ts 11├── app.component.ts 12└── app.module.ts

[本題]

######app.component.htmlに読み込ませずそのままindex.html内でa.component.tsを呼び出すことは可能でしょうか?


[内容]

a.component.tsを呼び出したいならa.module.tsのdeclarations配列に自動追記されたa.componentのAクラス名が記載されていればapp.component.html内では呼び出せます。
しかし、index.htmlではapp.componentしか呼び出すことはできません。

bootstrap配列に表示させたいcomponentを複数入れて立ち上げることもできるそうですが、バグが多く、読み込んだ順番によって表示されたりされなかったりと不安定です。

app-rootタグ内に全てを収納する仕様は本番環境でhtmlソースの全表示がjsを介することになると思うので、描画スピードがjsありきになってしまうことからパフォーマンスチューニングができないのでapp-rootタグに全てを収納することは避けたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問の意図で不明な点はいくつかありますが・・・。
基本的に、Angularは、SPAでありますので、
質問のように、app.component.html(他のapp.ファイル)を通すのがありきのものでありますので、
appを通さないで表示、となると、そもそもAngularを使用する意味が消失するように思います。

app-rootタグ内に全てを収納する仕様は本番環境でhtmlソースの全表示がjsを介することになると思うので、描画スピードがjsありきになってしまうことからパフォーマンスチューニングができないのでapp-rootタグに全てを収納することは避けたいです。

そもそも、JSによって、統合的にSPAを表現することができるのが、Angularの性質になりますので、
JSありきは外すことはできません。

ただし、本質問の要件がapp-root要素内に、全てのコンポーネントを読み込む必要があると勘違いしている、という内容であれば、それを解消する方法・仕様がAngularにはしっかりと備わってます。
ルーティング機能を使うことです。
これは、各コンポーネントを、一つのページとして扱い、
各コンポーネント個々で、ビューの処理やテンプレートを構築できる、というものです。
これを使えば、app-root内に全てのコンポーネントを読み込む必要は全くなく、
各ルートにおいて、URL別に表示に使うコンポーネントを分ける、といったことなどが可能になります。

詳しい使用方法などは、割愛させていただきます。
(なかなか膨大になるため)
ご自身で、Angular ルーティング などで検索してみましょう。

投稿2020/01/06 04:50

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問