我在angular2模板中有以下代码。它生成一个章节列表,并将clicked属性设置为当前章节的属性。
<div class="chapters col s3">
<a *ngFor="let chapter of chapters; let i=index" (click)="clickedItem = i" [class.clicked]="i == clickedItem" class="chapter"
[routerLink]="['/tutorial/chapter', chapter.number]">{{chapter.number}}. {{chapter.title}} </a>
</div>
问题是这只是在页面初始加载时填充,如果章节发生变化,路由器不刷新此组件,所以&#34;点击&#34;章节没有改变。
我想也许我可以使用*ngIf
并将其绑定到我的组件的chapter
属性,该属性订阅了路由参数,因此它会自行更新。然后,选择具有单击类的版本。但是,此实现会引发错误:
<div class="chapters col s3">
<a *ngFor="let chapter of chapters; let i=index" *ngIf="i==chapter" (click)="clickedItem = i" class="chapter clicked" [routerLink]="['/tutorial/chapter', chapter.number]">{{chapter.number}}. {{chapter.title}} </a>
<a *ngFor="let chapter of chapters; let i=index" *ngIf="i==chapter" (click)="clickedItem != i" class="chapter" [routerLink]="['/tutorial/chapter', chapter.number]">{{chapter.number}}. {{chapter.title}} </a>
</div>
在一个元素上不能有多个模板绑定。只使用一个名为&#39; template&#39;或以*
为前缀
我无法看到如何将此包装在带有ngIf属性的div中,因为我需要来自i
的{{1}}?
我是如何做到这一点的?