第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Angular 材質(zhì)列表選項返回 true,即使為 false

Angular 材質(zhì)列表選項返回 true,即使為 false

開心每一天1111 2022-10-27 16:14:28
<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);}我檢查了百次所有值,它們是正確的有一些權(quán)限并havePermission 返回真或假UseLspdTablet trueModifyRanks trueAccessCitizenIndex trueAccessCitizenRegistry falseArrestMandateCitizen falseChangeCitizenPhoneNumber falseModifyCitizenWanted falseShowCitizenCrimeCount falseAccessVehicleIndex falseSetVehicleAsStolen falseSetVehicleAsWanted falseSetVehicleAsFound falseSetVehicleNote false每次我運行這個頁面時,一切都運行良好,但是我等待 3 秒(在此之后同一頁面上還有一些其他更新,他們都沒有訪問任何這些變量或其他東西)然后在控制臺中它們?nèi)匀伙@示好的,但是在頁面中它們都被選中了,為什么此外,我注意到有 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調(diào)用一次,這會導(dǎo)致此重新渲染,但它應(yīng)該會導(dǎo)致 13 次調(diào)用havePermission,但會導(dǎo)致 99999999 個調(diào)用,為什么Windows 10 角 8.3.26 打字稿 3.5.3 @角/材料 8.2.3我在 FiveM 應(yīng)用程序(GTA V)上運行了它——它只使用了鉻。為什么
查看完整描述

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ù)


查看完整回答
反對 回復(fù) 2022-10-27
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號