Привязка угловых свойств ngForTrack не используется никакими директивами - PullRequest
0 голосов
/ 28 июня 2018

Я работаю над преобразованием углового сайта 1.x в угловой 2.6 и пытаюсь получить текст и URL для отображения, и у меня есть следующий код со старого сайта:

<div ng-repeat="item in cartCtrl.downloadFinishedItems track by $index">
    <div class="links-14">
        <a ng-show="item.downloadJob.downloadLink"
              ng-click="cartCtrl.downloadFile(item)">{{item.name}}</a>
    </div>
</div>

Но когда я конвертирую в:

<div *ngFor="let item of downloadFinishedItems track by $index">
    <div class="links-14">
        <a [hidden]="!item.downloadJob.downloadLink"
            (click)="downloadFile(item)">{{item.name}}</a>
    </div>
</div>

Я получаю следующую ошибку:

What am I missing here?

Новый эквивалент этой строки? :

 <div *ngFor="let item of downloadFinishedItems; index as i; trackBy:i">

1 Ответ

0 голосов
/ 29 июня 2018

Как упомянуто в документации NgForOf :

Чтобы настроить алгоритм отслеживания по умолчанию, NgForOf поддерживает trackBy вариант. trackBy принимает функцию, которая имеет два аргумента: index и пункт . Если задано trackBy , угловые дорожки изменяются на возвращаемое значение функции.

В вашем случае это будет:

<div *ngFor="let item of downloadFinishedItems; trackBy: trackByIndex">

по методу:

trackByIndex(index, item) {
  return index;
}
...