我有一个材料菜单(垫菜单)触发的历史图标按钮,应该包含一个运行列表的帐户,用户已经搜索。
在课堂上:
searchHistoryList: Array<string>; // populated dynamically while the app is in use在观点中:
<button mat-icon-button [matMenuTriggerFor]="accountHistoryList">
<mat-icon>history</mat-icon>
</button>
<mat-menu #accountHistoryList="matMenu">
<button mat-menu-item *ngFor="let acc of searchHistoryList">
<button mat-menu-item (click)="loadCustomer(acc)">{{acc}}</button>
</button>
</mat-menu>问题是,这个名单的垫菜单项目似乎只呈现一次。通过实验,我发现如果我用一些硬编码的值初始化绑定到这个模板的searchHistoryList数组,它们就会出现在菜单项列表中。但是,如果我在运行时以编程方式向searchHistoryList数组添加值,则不会显示这些值。
我做错什么了?
发布于 2020-03-19 14:31:17
您需要使用trackByFn来告诉角您的集合已经更改,并且需要重新呈现。
<mat-menu #accountHistoryList="matMenu">
<button mat-menu-item *ngFor="let acc of searchHistoryList;trackBy=trackByMethod">
<button mat-menu-item (click)="loadCustomer(acc)">{{acc}}</button>
</button>
</mat-menu>功能定义:
trackByMethod(index:number, el:any): number {
return el.id;
}https://stackoverflow.com/questions/60758942
复制相似问题