Angularアプリケーションで非常に奇妙な問題が発見されました。プロパティバインディングで無期限に呼び出される関数
のは、私は私のブラウザで今私が見ることができるコンソールを
<html>
<body>
<button type="button" [disabled]="buttonShouldBeDisabled">Button</button>
</body>
</html>
を次のように定義されたテンプレートを使用して、簡単なexample.component.ts
@Component({
moduleId: module.id.toString(),
selector: 'example',
templateUrl: 'example.component.html',
styles: [``]
})
export class ExampleComponent{
get buttonShouldBeDisabled(){
console.log("property call");
return true;
}
}
があるとしましょう、その文字列「プロパティ呼び出しは」無期限に記録されています。
このような現象が発生する可能性はありますか?これは、私の財産が何度も繰り返し呼び出されていることを意味し、ブラウザがユーザーの行動に反応しないことを正しく理解していますか?
プロパティまたは属性バインディングでfunctionを使用すると、各変更検出サイクルで関数が呼び出されます。 –
ゲッターは関数なので、技術的には私はそうしていますか?これは、私の例に似たユースケースを別の方法で処理する必要があることを意味しますか?私は財産も機能も使うべきではない、ということを意味するのですか?もしそうなら、ここで正しいアプローチは何ですか? –
あなたのアプローチに間違いはありません。確かに、プロパティまたは属性のバインディングのための関数を使用することは少しお勧めしますが、関数が1つまたは2つの場合は大丈夫ですが、パフォーマンスが低下することはありません。私があなただったら、単にboolean変数を使って 'disabled'属性にバインドして、ボタンを無効にするか有効にするかによって状態をtrue/falseに変更します。 –