2017-12-15 3 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

はい、無効にすると、フォーム入力のように表示可能で編集できないことを意味します。 –

関連する問題