Допустим, у меня есть список людей, которых я хочу отобразить. Ниже вы увидите HTML для этой итерации в цикле *ngFor
. Вы можете просмотреть этот StackBlitz , чтобы проверить полный пример.
<mat-list role="list">
<mat-list-item *ngFor="let name of names" role="listitem">
<mat-icon mat-list-icon>person</mat-icon>
<h4 mat-line>{{name.firstName}}</h4>
</mat-list-item>
</mat-list>
В некоторых случаях список должен отображаться как связанный список, поскольку список людей затем ссылается на другие веб-страницы. Для этого я могу написать *ngIf
, который проверяет, должен ли он быть связанным списком или обычным списком, как написано ниже.
<div *ngIf="isNormalList; else isLinkedList">
<h3>Normal list with items</h3>
<mat-list role="list">
<mat-list-item *ngFor="let name of names" role="listitem">
<mat-icon mat-list-icon>person</mat-icon>
<h4 mat-line>{{name.firstName}}</h4>
</mat-list-item>
</mat-list>
</div>
<ng-template #isLinkedList>
<h3>List with clickable items</h3>
<mat-list role="list">
<a mat-list-item href="#" *ngFor="let name of names" role="listitem">
<mat-icon mat-list-icon>person</mat-icon>
<h4 mat-line>{{name.firstName}}</h4>
</a>
</mat-list>
</ng-template>
Тем не менее, решение этой проблемы кажется большим количеством дублирующегося кода. Я мог бы также написать *ngIf
для внутренней части элемента списка, но это более или менее то же самое и заканчивается дублирующим кодом.
Есть ли способ только условно добавить элемент a
в этой настройке?