これはここで取り上げる大きなトピックですが、私は答えようと思います。
アイデアは、コンポーネントをモジュール内で宣言せずに実際にレンダリングすることです。
なぜ私たちはそのようなことをしたいのですか?
シンプル-モジュールは単なるコンポーネントではありません。モジュールにはゾーン、プロバイダー、インジェクター、DIなどがあります。私たちの多くのモジュールはアプリケーションを表しています。また、単純なコンポーネントを作成して、それを別のコンポーネントにレンダリングしたい場合もあります。
それが引き起こす問題は何ですか?
モジュールは私たちのためにゾーンを設定するものです。ゾーンは、変更検出を自動的にトリガーするゾーンです。モジュールの外でコンポーネントをレンダリングする場合、自動変更検出はありません。
そのため、Ivyを使用すると、次のようないくつかの新しいAPIを利用できます。
ɵrenderComponent()
-モジュールで宣言せずにコンポーネントをレンダリングできます。
ɵdetectChanges();
-変更検出を手動でトリガーするが、それは単なる関数で@angular/core
あり、DIを挿入するためにこれ以上DIは必要ありません。ChangeDetectorRef
ɵmarkDirty()
-次の変更検出サイクルでチェックするコンポーネントをマークします。
ɵɵdirectiveInject()
-コンストラクターを使用せずに、関数の問題でInjectionTokenを挿入します。
ɵ
これらすべての新しいAPIの前にこの記号が何であるかを尋ねる場合、それらの関数はまだ実験的であり、まだ本番環境では使用しないでください。そして、それは彼らが文書化されていない理由でもあります。
あなたの質問-コンポーネントでのCDの使用を最小限にしたい場合は、それらをrenderComponent
関数でレンダリングし、CDを自分で処理してください。
あなたがもっと読みたいなら、私はこのトピックについて完全なブログ投稿を書きました、たくさんのコード例を含みます。あなたはそれをここで見つけることができます-「Ivyのリリース後のリリースにおけるスタンドアロンコンポーネントの未来」
私はNG-DE 2019でもそれについて講演しました-" Bye Bye NgModules "