2016-03-25 3 views
2
たとえば

、私は2つの入力の性質を持っています私はフィールド2を初期化するたびに、function2()を呼び出すようにします。私はこれがOnInitに似ていると思うが、それほどではない。問題を解決する方法はありますか?Angular2 Oninit()監視するデータバインドされたプロパティを指定する方法は?私は関数1()と呼ばれるが欲しい、</p> <pre><code>@Input() field1; @Input() field2; </code></pre> <p>私はフィールド1を初期化するたびに;:

ありがとうございます!

答えて

5

初めて入力プロパティがバインドされたとき(およびそれ以降のすべての時間フィールドで)、lifecycle documentationごとにngOnChangesフックが呼び出されます。

新しいと前の状態を公開SimpleChangeオブジェクトへの各プロパティをバインドすることができ:

ngOnChanges(changes: {[propertyName: string]: SimpleChange}) { 
    for (let propName in changes) { 
    if (propName === 'field1') 
     this.function1(); 

    if (propName === 'field2') 
     this.function2(); 
    } 
} 
3

それは何を「初期化」によって何を意味するか

  • に依存しており、
  • 2つの入力プロパティのタイプは、

"初期化"常に新しい値を割り当ててから、@ DavidLの答えを見てください。
入力プロパティの型がJavaScript参照型(Array、Objectなど)の場合、「新しい値の割り当て」とは、新しいArray、Objectなどの割り当てを意味します。ArrayアイテムまたはObjectプロパティの変更は含まれません。そのシナリオのために読む...

入力プロパティの型がJavaScript参照型で、 "初期化"が配列項目の値を変更したり、Objectプロパティの値を変更したりする場合、ngOnChangesは使用できません。このシナリオでは参照は変更されないため、角度変化の検出ではこれが変更として認識されません。このシナリオでは、ngDoCheckを実装し、そのメソッド内に独自の変更検出ロジックを記述します。

+0

あなたはもっと頻繁に答えるべきです。 angular2には良い答えがあまりない。 –

+3

@EricMartinez、私はこのことを途方もない仕事と呼んでいます。 (私は不平を言わない、私は私の仕事が好きです。) –

+0

ああ、仕事は悪いです、彼らはあなたが彼らが好きだと思うようにも!私はここであなたをもっとよく見たいと思っています! –

関連する問題