2017-05-11 2 views
0

텍스트 편집 구성 요소를 설계 중입니다. 최소한의 실행 가능한 상태로 기본 텍스트 편집기를 개발했습니다. 이제 필드 텍스트/템플릿을 구현할 수있는 기능을 추가하고 싶습니다.각도 2로 지침 구현에 대한 조언 받기

//basic text editor 
 
<text-editor></text-editor> 
 

 
//text editor with templates 
 
<text-editor *templateProvider='templateProviderIdentifier'></text-editor> 
 

 
//templates used on some future item 
 
<not-yet-defined *templateProvider='templateProviderIdentifier'></not-yet-defined>

지침에 대한 Angular2 문서는 지침 생성자 속성 지침을 제공하는의하여 elementRef 주입 할 수 있음을 나타냅니다 :

나는 마크 업이 같이 보일 것이라고 상상하고 DOM 요소에 대한 액세스는 가능하지만, 속성 지시문은 어떻게 컨트롤러에 액세스 할 수 있습니까?

템플릿이 다른 곳에서 사용될 수 있으므로 텍스트 편집기를 편집하고 싶지 않습니다. 원칙적으로 요소에 속성이 표시되면 지시문이 연결된 컨트롤러를 잡고 사용 가능한 인터페이스를 테스트합니다. 요소가 발견되면 요소의 비헤이비어 수정 자로 설정하거나 하위 객체의 데코레이터로 설정하여 구성 요소를 수정합니다.

저는 Attribute Directive가 Controller 객체에 액세스하는 방법과 계획중인 접근법에서 볼 수있는 팁이나 트릭 또는 함정에 대한 정보를 찾고 있습니다. 내가 읽고 매뉴얼 페이지에 빠르게 참고로

, 나는 다음과 같은 링크를 포함 : 당신이 입력으로 angular2 구성 요소를 사용할 수 있습니다

답변

0

을 값 은 다음과 같습니다.

import { Component, OnInit, AfterViewChecked, AfterViewInit, Input, Output, ElementRef, EventEmitter } from '@angular/core'; 

@Component({ 
    selector: 'text-editor', 
    template: require('./text-editor.component.html'), 
    styleUrls: ['css/text-editor.css'] 
}) 
export class TextEditorComponent implements OnInit, AfterViewInit { 

    @Input() templateProvider: any; 
    @Output() something_for_output = new EventEmitter<any>(); 

    private el:HTMLElement; 

    constructor(elementRef:ElementRef) { 
    } 

    ngAfterViewInit() 
    { 
    } 

    ngAfterViewChecked() 
    { 
    } 

    ngOnInit() 
    { 
    } 
} 

다음은 HTML이를 사용할 수 있습니다

<text-editor [templateProvider]='something'></text-editor> 
+0

나는 그 제안을 좋아하지만, 다음 문서 편집기가 인식하고 템플릿 제공자의 존재에 대해 "알고"있어야합니다. 이것은 실제로 나의 현재 구현이지만, 그래서 나는 당신의 생각을 좋아합니다. 새로운 디자인에서, 텍스트 에디터는 컨텐트 윈도우 인터페이스를 가진 컨텐트 윈도우를 가지고 있으며, 템플릿 지시어가 컨텐트 윈도우를 추출 할 수 있기를 바라고 있습니다. (동일한 인터페이스를 가진 Decorator처럼) ... –

+0

. .. 다음 래핑 된 개체를 다시 구성 요소로 설정하십시오. 이 방법으로 편집기는 내용 창만 처리하므로 템플리트 공급자가 실제로 그 사이에 레이어로 삽입되는 것은 아닙니다. –