web-dev-qa-db-ja.com

* ngular2で無限ループを実行する場合

以下のコードを使用してangular2のキーを使用してオブジェクトのプロパティをレンダリングしようとしています:

_<ul>
    <li *ngFor="let element of componentModel | keys;let i=index">
      {{element.key}}--{{element.value}}  // 1---Bhushan...loaded only once
      <span  *ngIf="element">{{ loadProperty(i,element) }}</span>
    </li>
</ul>
_

しかし、私はここで問題に直面しています。ブラウザの出力は一度だけ読み込まれます。しかし、メソッド呼び出し、つまりloadProperty(i,element)は無限ループで実行されています。

_loadProperty(i:number,element:any){       
    console.log(element.key+'========'+element.value);
    console.log(element);      
}
_

ブラウザ出力を意味します

(1 ---ブーシャン)

は1回だけ表示されますが、コンソールでは次のように無限に実行されます。

Snapshot of the console

このメソッドを繰り返しごとに1回だけ呼び出したいです。

入力はありますか?

23
Bhushan Gadekar

これは、Angular2の変更検出で、各変更検出サイクルでloadProperty(i,element)を繰り返し呼び出しています。

テンプレートからメソッドを呼び出すことは、頻繁に呼び出されるためお勧めできません。代わりに、結果をプロパティに格納し、代わりにこのプロパティにバインドする必要があります。

20