1

次のコンポーネント ツリー構造を検討してください。Angular2

    A
  B 
D  E  

Dclick to 経由でイベントを発行すると、Brootangular2から変更検出が自動的に開始されますA。直接イベントを発行していなくconsole.logても、検出を変更する方法はありますか?DA

たとえば、D

html

<div (click)="update($event)"></div>

component

@Output() myOutputName = new EventEmitter();

update(event) {
    this.myOutputName.emit('some vlaue'); 
}

B

(myOutputName)="update($event)"

しかし、Bそのイベントがさらに進んでいない場合A、変更検出を実行しているかどうかを判断する方法がありません。

Change Detectionこれの動機は、デバッグ目的で実行されているコンポーネントを把握することです

4

1 に答える 1

2

ngDoCheck()各コンポーネントに実装します。これは、変更検出がコンポーネントで実行されるたびに呼び出されるライフサイクル フックです。

https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#docheckも参照してください

ただし、メソッドが呼び出されたからといって、必ずしもテンプレート バインディングの変更がチェックされているとは限りません。OnPush最初のコンポーネントがマークされて いなくても、まだ呼び出されていると思います (間違っている可能性があります。これは、少し前にプランカーで遊んだときの記憶によるものです) ngDoCheck()。ただし、テンプレートバインディングはチェックされていないと思います。また、OnPushコンポーネントがチェック用にマークされていない場合ngDoCheck()は、子孫コンポーネントでは呼び出されません。

于 2016-04-08T18:02:57.033 に答える