<mat-selection-list>
<ng-container *ngFor="let cat of permissionCategories()">
<mat-divider></mat-divider>
<div mat-subheader>{{ cat }}</div>
<mat-list-option *ngFor="let permission of permissionsOfCategory(cat)"
[selected]="havePermission(permission)"
>
{{ permission.Name }}
</mat-list-option>
</ng-container>
</mat-selection-list>
和
havePermission(permission: Permission): boolean {
return this.currentRankPermissions.includes(permission.Id);
}
我检查了百次所有值,它们是正确的有一些权限并havePermission 返回真或假
UseLspdTablet true
ModifyRanks true
AccessCitizenIndex true
AccessCitizenRegistry false
ArrestMandateCitizen false
ChangeCitizenPhoneNumber false
ModifyCitizenWanted false
ShowCitizenCrimeCount false
AccessVehicleIndex false
SetVehicleAsStolen false
SetVehicleAsWanted false
SetVehicleAsFound false
SetVehicleNote false
每次我运行这个页面时,一切都运行良好,但是我等待 3 秒(在此之后同一页面上还有一些其他更新,他们都没有访问任何这些变量或其他东西)然后在控制台中它们仍然显示好的,但是在页面中它们都被选中了,为什么
此外,我注意到有 thounds 的控制台日志这个 = thounds of rerenders。
其余可能很重要的代码:
onTablesChanged() {
this.allRanks = Array.from(this.db.Tables.Rank.values());
if (this.permissionsOfRank.length <= 0) {
this.permissionsOfRank = Array.from(this.db.Tables.PermissionOfRank.values());
}
}
permissionCategories(): string[] {
const res = [];
Array.from(this.db.Tables.Permission.values()).forEach((permission: Permission) => {
if (!res.includes(permission.Category)) {
res.push(permission.Category);
}
});
return res;
}
permissionsOfCategory(cat: string): Permission[] {
return Array.from(this.db.Tables.Permission.values())
.filter(c => c.Category === cat);
}
每 3 秒onTablesChanged调用一次,这会导致此重新渲染,但它应该会导致 13 次调用havePermission,但会导致 99999999 个调用,为什么
Windows 10 角 8.3.26 打字稿 3.5.3 @角/材料 8.2.3
我在 FiveM 应用程序(GTA V)上运行了它——它只使用了铬。
为什么
守着星空守着你
相关分类