2017-03-27 7 views
4

私はDOM構造を作成していますが、初めて一部のビジュアルコンポーネントにいくつかの部分を追加したいだけで、何度も何度もリフレッシュする必要はありません。これは、一度作成された変更されないことがわかっているものに対して、バインディングが何度も実行されるのを避けるためです。つまり、Angular1にはこれを実現するための演算子が::となっています。Angular2:* ngのための1つの時間バインディングが利用できますか?

Angular2で利用可能な*ngIfの綴りはありますか?これが他のいくつかの質問で議論されている場合は、質問に私を指摘してください。

+0

'* ngIf'は、値が変更されない場合は、リフレッシュせずに再びリフレッシュしません。そして、いいえ、Angular2 + 1日バインディングはありません+ –

+0

あなたのコメントをありがとう。それは私の悪いこと、私が意味するのはバインディングを最適化することだけです。 – Abhi

+0

おそらく、メソッドまたはゲッターにバインドしている可能性があります。それは通常良い考えではありません。代わりに、ライフサイクルのコールバックやイベントハンドラからメソッドやゲッターを呼び出し、それをフィールドに割り当て、代わりにそのフィールドにバインドします。変更検出は、メソッドを使用する場合よりもフィールドを使用する方が効率的です。 –

答えて

1

あなたは、このような何か最初のページ・ロードとディスプレイに渡された式を評価するか、渡された状態の値に基づいて、DOMにテンプレートが表示されません独自の構造的なディレクティブを作成することができます:あなたはそれを使用することになり

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

@Directive({ selector: '[customNgIf]' }) 
export class CustomNgIfDirective { 

    @Input("customNgIf") condition: boolean; 

    constructor(
     private templateRef: TemplateRef<any>, 
     private viewContainer: ViewContainerRef) { 
    } 

    ngOnInit() { 
     if (condition) { 
      this.viewContainer.createEmbeddedView(this.templateRef); 
     } else { 
      this.viewContainer.clear(); 
     } 
    } 
} 

<div *customNgIf="expression"> 
    Test 
</div> 
関連する問題