2017-02-26 3 views
2

のは、私が結合出力で親と子のコンポーネントを持っているとしましょう:角2の出力でどのように変化検出が行われますか?

<parent> 
    <child (doStuffChild)="doStuff()"></child> 
</parent> 

ユーザーのクリックは、doStuffChild.emit()の原因となります。

  1. 次のイベントの順番は次のとおりです。doStuff()親のメソッドが最初に呼び出され、次に検出がルートから行われますか?
  2. 親のdoStuff()の呼び出しも、クリックによって開始されたZone.run()の内部で発生しますか?
  3. クリックが最終的にzone.onTurnDone()イベントにつながったため、変更の検出が最終的に行われますか?
  4. どのようなライフサイクルフックが呼び出され、どのような順序で呼び出されますか? (つまり、onChanges/doCheckは親または子で呼び出されますか?)
  5. ngOnChangesが呼び出されると、どうしてですか?私はNgOnChangesだけが入力のために呼び出されると思った。それはあまりにも混乱だ場合、私は私の質問を明確にするために満足している

this articleを読んだ後、私はngOnChangesが呼び出されると仮定しています)。角度を約@Output()のを知っているので、イベントが送出された時に

答えて

1
  1. はイエス

  2. doStuff()

    がAngularsルートゾーン内で実行され、追加のZone.run()

  3. 変化検出の必要は起こりません

  4. @Input()が変更されていないため、

    onChangesは呼び出されません。 は、doStuff()が呼び出された後に変更検出が実行されたときに実行されます。

関連する問題