2017-12-15 8 views
0

요소를 렌더링할지 여부를 결정하는 지시문을 구현했습니다.ViewContainerRef에 의해 생성 된 요소를 비활성화 할 수 있습니까?

import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core'; 

export class MyDirective { 

    constructor(private _templateRef: TemplateRef<any>, 
     private _viewContainer: ViewContainerRef) { 
    } 

    @Input() set method() { 
     this._viewContainer.clear(); 
     if (// some logic here //) { 
      this._viewContainer.createEmbeddedView(this._templateRef) // render element 
     } 
} 

내 문제는 이제 요소를 렌더링하려고하지만 요소가 활성화되었는지 여부를 결정해야합니다. 지침 자체 내에서이를 수행 할 수있는 방법이 있습니까?

+0

'cdk'이 가장 좋은 방법이지만 구현하기가 어렵다. –

답변

1

는 그것은에서 수행하는 것과 동일한 방법으로 수행 할 수 있습니다 내장 ngIf directive :

if (// some logic here //) { 
    this._viewContainer.createEmbeddedView(this._templateRef) // render element 
} else { 
    this._viewContainer.clear(); 
} 
+0

그래서'else'에서 요소를 올바르게 렌더링하지 않겠습니까? 나는 렌더링이 필요하지만 장애가있다. –

+1

예, 이전에 렌더링 된 경우 뷰를 렌더링하지 않고 지우지 않습니다. 귀하의 경우 '장애인'이 의미하는 바는 무엇입니까? 요소가 양식 입력이 아니라면 기술 용어가 아닙니다. – estus

+0

예, 사용 중지됨은 양식 입력과 같은보기 가능하지만 편집 할 수 없음을 의미합니다. –