これは小さなことですが、私を悩ませています。 Rendererのインスタンスをコンポーネントに挿入して、それをうまく使用することができます。私が理解できないことは、これがどのように機能しているかです。私がソースコードで見つけることができる限り、DomRootRenderer_のみがBrowser_App_Providersの内部でRootRendererとして提供されます。しかし、Rendererの実際の実装はDomRendererクラスであり、プロバイダを見つけることができませんでした。だから、DIはどのようにレンダラーを解決していますか? DomRootRenderer_のどこかでRenderComponentメソッドを呼び出していますか?誰かが私をソースの正しい場所に向けることができますか?角度2レンダラーはいつ提供されますか?
1
A
答えて
0
。この子インジェクタが作成されると、追加のプロバイダを追加できます。 Angular2子インジェクターを作成する方法をproviders
とviewProviders
あなた@Component()
デコレータに追加すると、それはまたElementRef
のような他のプロバイダのシリーズを追加し、ViewContainerRef
、Injector
、親コンポーネント、...
では、例えばあることを行いますhttps://stackoverflow.com/a/37734641/217408
また、コンポーネントインスタンスの作成時にプロバイダが解決される方法については、https://angular.io/docs/ts/latest/api/core/index/DirectiveMetadata-class.htmlを参照してください。
0
これは、ドキュメントからのもので、RootRenderer
:コンポーネントが作成されると、親コンポーネントのインジェクタの新しい子インジェクタは新しいコンポーネント用に作成され
/**
* Injectable service that provides a low-level interface for modifying the UI.
*
* Use this service to bypass Angular's templating and make custom UI changes that can't be
* expressed declaratively. For example if you need to set a property or an attribute whose name is
* not statically known, use {@link #setElementProperty} or {@link #setElementAttribute}
* respectively.
*
* If you are implementing a custom renderer, you must implement this interface.
*
* The default Renderer implementation is `DomRenderer`. Also available is `WebWorkerRenderer`.
* @experimental
*/
export abstract class RootRenderer {
abstract renderComponent(componentType: RenderComponentType): Renderer;
}
関連する問題
- 1. 提供されたパラメータは、角2
- 2. 角度レンダラー2除去リスナー
- 3. 角2 RuntimeCompiler:XHRの実装は提供されていません
- 4. 角度2+ Unitest提供するディレクティブは、オブジェクト
- 5. 位置提供者が角度をつけていない
- 6. は角度コアコンポーネント用のルータサービスの提供2
- 7. sails.jsから角2 CLIを提供
- 8. Typescriptサービスによって提供される角度アクセスパラメータ
- 9. 角度+ Django REST認証資格情報が提供されていません
- 10. 角度2 - 子供のルート
- 11. サイトがローカルファイルシステムから提供されている場合、角度表示は機能しますか?
- 12. クライアント側のルーティングは、サーバー側ルーティングが推奨されており、角度ユニバーサルで提供されています。
- 13. 角度2フォーム提出
- 14. 角2コンポーネント変数の提供
- 15. 角2カスタムフォームコンポーネント:markTouchedメソッドを提供
- 16. Githubはいつ自動マージの解像度を提供しますか?
- 17. 提供方法クラウドCDNストレージバケットからの角度ドリップリンク
- 18. FCMから提供される2つの異なるAPIキーの違い
- 19. 角2:ルートに基づいてサービスを提供する
- 20. 角度2のドキュメント/角度2のngdocsはありますか?
- 21. 角度2 + typscriptまたは角度2 + JavaScript 1つをお勧めします
- 22. 2角度 - 子供のルート親コンポーネント
- 23. QImageに提供されたデータはいつ削除できますか?
- 24. MSCVR100D.DLLデバッグシンボルはどのパッケージで提供されていますか?
- 25. 角度2のテスト -/employees /:/ id/editへのルーティングのためのRouteParamsを提供
- 26. 角度2(角度-CLI):キャッチされないにReferenceError:グーグルが
- 27. 角度2の提案のバックエンド?
- 28. 起動時に外部データを提供する角度
- 29. 角度アプリでtxtファイルを提供する方法
- 30. 角2のコンポーネントでサービスを提供しない理由
私はフレーズ私の質問正しく、または多分私はあなたの答えを理解していないと思う。基本的に私はDIがどのようにレンダラーを具体的なクラスDomRenderer(https://github.com/angular/angular/blob/master/modules/%40angular/platform-browser/src/dom/dom_renderer)に解決しているのか混乱しています。 ts#L58)。 BrowserAppProvider(https://github.com/angular/angular/blob/master/modules/%40angular/platform-browser/src/browser.ts#L64)は、両方とも同じクラスを使用するDomRootRendererとRootRendererのみを提供していますDomRootRenderer_だと思いますか?したがって、DomRendererはレンダラーとしていつ提供されますか? –
プロバイダに追加された場所が見つかりませんでしたが、DomRootRenderer.renderComponent()から返されるものと仮定しています(https://github.com/angular/angular/blob/3644eef860cdc31a22368acd48b0e657fd89f501/modules/%40angular/プラットフォームブラウザ/ src/dom/dom_renderer.ts#L42) –
それは私が同様に仮定しているものです。 RootRendererとDomRootRendererの両方にuseFactoryが用意されていなかったので、renderComponentが呼び出されたときはわからなかったので、ちょっと驚いていました。しかし、私は元の投稿で言ったように、大したことではありません。ご協力いただきありがとうございます。 –