2017-12-18 1 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는 웹 근로자 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- 예 : –

관련 문제