Я использую *ngFor
для итерации некоторых данных, таких как:
<div *ngFor="let d of [1, 2, 3]"> {{d}} </div>
Все хорошо, и я получил результат, как и ожидалось:
<div> 1 </div>
<div> 2 </div>
<div> 3 </div>
Затем я удивилсяесли я использую функцию вместо {{d}}
, то я написал функцию:
protected logAndReturn(item) {
console.log(item);
return item;
}
и использовал ее:
<div *ngFor="let d of [1, 2, 3]"> {{logAndReturn(d)}} </div>
Я получил тот же результат рендеринга HTML, что и первыйкод, но консольный вывод не был моим ожидаемым выводом.Вывод на консоль:
1
2
3
1
2
3
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
1
2
3
1
2
3
Добавленная функция теперь вызывается 12 раз (4 раза для каждого элемента)
Вот код, который вы можете проверить самостоятельно: jsfiddle
Мой код неверен?Есть какое-нибудь решение, чтобы предотвратить эти дополнительные звонки?Почему это произошло, и кто-нибудь может объяснить это немного?