1 回答

TA貢獻(xiàn)1799條經(jīng)驗 獲得超8個贊
通常在 .html 中使用函數(shù)是個壞主意。我想你的permissionCategories 和permissionOfCategory 在表格改變時改變,那你可以在onTablesChanged 中管理。所以你可以使用這個函數(shù)來計算一個data對象數(shù)組的變量。每個對象都有兩個屬性:category和permissions(最后一個是一個數(shù)組)。所以:
data:any[] //<--declare a variable
onTablesChanged() {
this.allRanks = Array.from(this.db.Tables.Rank.values());
if (this.permissionsOfRank.length <= 0) {
this.permissionsOfRank = Array.from(this.db.Tables.PermissionOfRank.values());
}
//here calculate data in the way
data=this.permissionCategories().map(x=>({category:x,permissions:[]}))
//data is an array ob object with "category" and "permissions"
data.forEach(x=>{
//with each element of data
x.permissions=this.permissionsOfCategory(x.category)
//x.permisions is an array of Permision, but
//you create an object with "permision", the Permision and "selected"
.map(p=>({
permission:p,
selected:this.havePermission(x.category)
})
})
}
還有你的 .html
<mat-selection-list>
<ng-container *ngFor="let cat of data">
<mat-divider></mat-divider>
<!--use cat.category-->
<div mat-subheader>{{ cat.category }}</div>
<!--use cat.permissions-->
<mat-list-option *ngFor="let permission of cat.permissions"
<!--use
[selected]="permission.selected"
>
{{ permission.permission.Name }}
</mat-list-option>
</ng-container>
</mat-selection-list>
我希望不要錯過太多(我不檢查代碼),但請記?。哼@個想法是一次性計算- 使用 map 將數(shù)組轉(zhuǎn)換為對象數(shù)組(一個屬性是數(shù)組,另一個屬性是值計算)改為在 .html 中使用復(fù)雜函數(shù)
添加回答
舉報