как я могу поставить галочку снимать флажок материала несколько раз при инициализации их - PullRequest
0 голосов
/ 18 марта 2020

У меня есть случай, когда я загружаю множественный выбор для каждой строки данных. Я имею дело с тремя данными: -

export class MenuModel{
    Menu_ID: string;
    Menu_Name: string;
    Menu_Url: string;
    Menu_Weight: string;
    Parent_ID: string;
  }

  export class GetMenuForRoleModel{
        Menu_ID: string;
        Menu_Name: string;
        Menu_Url: string;
        Menu_Weight: number;
        Permission_Description: string;
        Permission_ID: number;
        Role_ID: number;
      }


 export class PermissionSettingModel {
    Permission_ID: string;
    Permission_Value: string;
    Permission_Description:string;

}

MenuModel Содержит все существующие меню, GetMenuForeRole Содержит меню, для которого у определенной роли есть разрешение, тогда как разрешение SettingModel Содержит все различные виды разрешений. Здесь MenuModel и PermissionSettingModel являются тусклыми таблицами, где GetmenuForRoleModel изменяется в зависимости от роли. Мое требование: - Мне нужно l oop через каждое меню (MenuModel []), проверить, есть ли меню в GetMenuForRoleModel []. Если он присутствует, то мне нужно отобразить точное разрешение, к которому он имеет доступ. Вот мой подход: -

1.Loop through all menu
2.us ng if to check if the id is present in GetMenuForRoleModel, if yes :-
<mat-form-field>
          <mat-label>Permissionssdfasdasd</mat-label>
          <mat-select [compareWith]="compareFn" multiple name="Nik1" 
            [(ngModel)]="menuForSelectedRole" >
            <mat-option *ngFor="let permission of allPermissionList" [value]="permission.Permission_ID">

              {{permission.Permission_Description}}

            </mat-option>
          </mat-select>
        </mat-form-field>

Вот сравнение: -

compareFn(perm: PermissionSettingModel, selectedMenu) {
    this.currentMenu = "1";
    console.log("comapre fn called");
    console.log(perm);
    console.log(selectedMenu);
    console.log(this.currentMenu);
    console.log(this.menuForSelectedRole);

var x = this.menuForSelectedRole.filter(data => (data.Permission_ID == +perm.Permission_ID
  && data.Menu_ID == this.currentMenu));
if (x)
  return true
else false

}

В нашем случае первый параметр метода сравнения всегда остается неизменным, т.е. 1. Любая подсказка, что я делаю неправильно. Я впервые работаю над angular, поэтому любая помощь будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...