2017-08-07 47 views
2

関数ngIfまたはngForを使って気付きましたが、関数は毎秒何回も関数を呼び出します。これとは対照的に、文字列、数字またはオブジェクトを使用すると、変更検出が開始されたときにのみチェックされます。関数ngIfと関数ngForは、毎秒何度も呼び出されます。

何か問題がありますか?それとも、これは期待される行動ですか?何も変わっていなければ機能をもう一度チェックする必要はないと私は言います。

例:

コンポーネント:

myFunction() { 
    console.log('I was checked'); 
    return true; 
} 

テンプレート:

<div *ngIf="myFunction()">hello there!</div> 
+1

これはhttps://stackoverflow.com/questions/35469024/how-does-angular-2-change-detection-workに似ていますかhttps://stackoverflow.com/questions/42661353/angular2-関数内のテンプレートと変更の検出 – 0mpurdy

+0

はい、これが予想されます:https://stackoverflow.com/a/43085186/6294072 – Alex

答えて

0

これは期待される動作。

Angularは何か変更があったかどうかを検出するために、ミリ秒ごとに多くのチェックを行います。

0

ChangeDetectionStrategyを使用すると、これを回避できます。私はこれについては確信していません。

@Component({ 
    // ... 
    changeDetection: ChangeDetectionStrategy.OnPush 
}) 
export class MyComponent { 
    // ... 
} 
関連する問題