问题描述: 在Angular 5中,当在*ngFor循环中调用Mat-tab方法时,该方法会被多次执行。
解决方法: 要解决这个问题,可以使用Angular的trackBy函数来告诉Angular如何跟踪*ngFor循环中的每个项目。
例如,如果你有一个返回唯一标识符的方法来标识每个项目,你可以在*ngFor循环中使用trackBy函数来指定该方法。
在组件中,定义一个返回唯一标识符的方法:
getItemId(index, item) {
return item.id;
}
然后在HTML模板中,使用trackBy函数来指定该方法:
使用trackBy函数后,Angular将根据返回的唯一标识符来跟踪*ngFor循环中的每个项目,确保只执行一次相关方法。
这样,*ngFor内调用的Mat-tab方法将不再被多次执行。