2016-12-01 6 views
2

ここで、testメソッド内のステートメントは複数回呼び出されます。なぜこうなった? DOMはAngularJS2によって複数回再現されますか?{{call()}}は、メソッドブロックを複数回実行しますか?

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: `<div>Method Call {{test()}}</div>>` 
}) 

export class AppComponent { 
    name = 'Angular'; 
    test() { 
     console.log("Test is called"); 
    } 
} 

答えて

6

{{test()}}角度ラン検出の変更が頻繁に検出されるたびに評価されます。

ビューからの関数またはメソッドへのバインドは、落胆です。メソッド呼び出しの結果をプロパティに代入し、代わりにこのプロパティにバインドすることをお勧めします。

@Component({ 
    selector: 'my-app', 
    template: `<div>Method Call {{someValue}}</div>>` 
}) 

export class AppComponent { 
    ngOnInit() { 
     this.test(); 
    } 
    name = 'Angular'; 
    test() { 
     this.someValue = "Test is called"; 
    } 
} 
+0

hmm!変更検出とは何ですか?もしあなたが参考文献を提供することで私を助けることができたら? :) –

+0

http://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html –

関連する問題