web-dev-qa-db-fra.com

* ngPour exécuter une boucle infinie en angular2

J'essaie de rendre les propriétés des objets à l'aide de clés dans angular2 en utilisant le code ci-dessous:

<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>

Mais je suis confronté à un problème ici. La sortie dans le navigateur n'est chargée qu'une seule fois. mais l'appel de méthode, c'est-à-dire loadProperty(i,element) s'exécute dans une boucle infinie.

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

signifie sur la sortie du navigateur

(1 --- Bhushan)

est affiché une seule fois, mais sur la console, il fonctionne à l'infini comme ci-dessous:

Snapshot of the console

Je souhaite appeler cette méthode une seule fois par itération.

des entrées?

23
Bhushan Gadekar

Il s'agit simplement de la détection de changement Angular2 au travail en appelant loadProperty(i,element) à plusieurs reprises dans chaque cycle de détection de changement.

Les méthodes d'appel à partir du modèle sont déconseillées car elles sont appelées très souvent. Au lieu de cela, vous devez stocker le résultat dans une propriété et vous lier à cette propriété.

20
Günter Zöchbauer