2017-12-18 14 views

答えて

5

通常のブラウザコンテキストでは、Renderer2はDOM操作ブラウザAPIの単純なデフォルトラッパーです。例えば、ここではその方法のほんの一部のthe implementation次のとおりです。

class DefaultDomRenderer2 implements Renderer2 { 

    addClass(el: any, name: string): void { el.classList.add(name); } 

    createComment(value: string): any { return document.createComment(value); } 

    createText(value: string): any { return document.createTextNode(value); } 

    appendChild(parent: any, newChild: any): void { parent.appendChild(newChild); } 

それは離れて、純粋なDOM要素から抽象レンダリング操作に導入されています。たとえば、あなたはこのようにそれを行うだろうクラスを追加する必要がある場合:

ここ
constructor(el: ElementRef, renderer: Renderer2) { 
    renderer.addClass(el.nativeElement, 'some'); 
} 

あなたはネイティブの要素と直接対話することはありませんし、あなたがしたいどのようにそのAPIを使用していないことがわかりますjQueryを使ってそれ:

constructor(el: ElementRef) { 
    $(el.nativeElement).addClass('some'); 
} 

レンダラを使用してコードを使用すると、そのほかのプラットフォームに固有のレンダラーの異なる実装を提供する場合、DOM以外のプラットフォーム上で実行することができるという利点があります。たとえば、AngularはWebワーカーWebWorkerRenderer2に対してRenderer2の実装を提供します。それはpostMessageメソッドを使用してaddClassのようなAPIのメソッドを実装し、DOMを更新する必要があるメインアプリケーションと通信します。

+0

我々はRenderer2 –

+0

@MantuNigam、私は離れて、[ソース]から(ないと思うの詳細説明を持つことができます任意の参照https://github.com/angular/angular/blob/e3140ae888ac4037a5f119efaec7b1eaf8726286/packages/プラットフォームのブラウザ/ src/dom/dom_renderer.ts#L102) –

+0

ありがとう、@ AngularInDepth.com同じhttps://www.concretepage.com/angular-2/angular-4-renderer2-例 –

関連する問題