2017-01-14 9 views
0

これはplunkを参照してください。角2は関数を4回呼び出す

角クイックスタートサンプルに基づいており、ここでテンプレートは関数を呼び出しています。

印刷機能は4回呼び出されますが、UIでは3回しか表示されません。 (this second plunk参照)。 2番目の大声でAngularはエラーをスローします。チェックされた後に式が変更されました。

生産モードを有効にすると、2回だけ呼び出されます。

私の質問は以下のとおりです。

  1. は、この問題を回避する方法はありますか?または私はこれを知っている必要があり、テンプレートによって呼び出される関数で重い操作を実行すべきではありません。
  2. これはダイジェストサイクルによるものですか?
  3. devモードでは、なぜ4番目のサイクルでUIがリフレッシュされず、3回目の繰り返しで停止するのはなぜですか?しかし、4回目に関数が呼び出されるのはなぜですか?
+0

変数を使用する必要があります。メソッドの結果をプロパティに代入し、代わりにこのプロパティにバインドし、イベントハンドラなどを使用して、依存値が変更されたときにプロパティを更新するのに適切なものを使用することをお勧めします。 –

答えて

1

ITSは全くAngular2 bindings/interpolationfunctionを使用することをお勧めしません。

以下に示すように、あなたはそれが毎回変化検出の実行と呼ばれ、代わりに

template: `<h1>Hello {{name}}</h1>{{myVar}}` 


name:string=''; 

constructor(){ 
    this.print();   
} 

public print():string { 
    console.log(`Called`); 
    this.name = "Hello"; 
    } 
+0

myVar = ''; RHSの割り当てによって、LHSタイプが適切とみなされます。 –

+0

@SamRedway申し訳ありませんあなたは何を求めようとしているのですか? – micronyks

+0

in typecript、 'myvar:string = ''' -':string'は、dataType(宣言)の部分を示します。 – micronyks

関連する問題