私はAngularの初心者であり、Web APIから返されたコンポーネント名を使用して、特定のルールに基づいてページにコンポーネントを動的に追加するプロジェクトがあります。基本的に、ユーザーはボタンをクリックして新しいコンポーネントA、B、C、Dなどを追加できます。次に、以前に追加したコンポーネントに基づいてそのコンポーネントを追加できるかどうかを確認してから、コンポーネントを追加する必要があります。コンポーネントが不明であるため、DBで名前を定義しましたが、Angular 2でこのようなことを行うには、非常に多くの異なる、やや紛らわしい方法を見てきました。
ComponentFactoryResolverを使用してAngularページにコンポーネントを動的に追加するためのオンラインおよびplunkrの例をいくつか見てきましたが、親クラスで子コンポーネントを事前定義する必要がありますが、私の場合はそれができません。ほとんどの例では、子コンポーネント名をハードコーディングする必要がありました。以前に動的に追加されたコンポーネントを参照し、Angular 2のAPIが受け取った名前で新しいコンポーネントを追加する方法はありますか?それが現実的かどうかはわかりません。
作成されたViewContainerRef
場所への参照がある限り、以前に作成されたコンポーネントが何であったかを実際に知ることができます。作成されたコンポーネントの名前を格納し、その参照に基づいてロジックを作成するサービスを作成することもできるため、その部分は大したことではありません。
ただし、マークアップで宣言されておらず、実行時に作成されるコンポーネントがあることをAngularに伝える必要があります。そのclass
ため、これらのコンポーネントを、entryComponents
現在のコンポーネントのプロパティに渡す必要があります。動的コンポーネントをインスタンス化します。これを行わないと、Angularはそれらを捨てるだけであり、それらが実際に存在することに気付かないでしょう。
だから、短い答え:
entryComponents
あり、インスタンス化されるコンポーネントに関してそれらを渡す必要があります。ただし、最初のポイントについてサポートが必要な場合は、簡単な例を設定してみてください。サポートさせていただきます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加