У меня есть случай, когда я загружаю множественный выбор для каждой строки данных. Я имею дело с тремя данными: -
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, поэтому любая помощь будет высоко оценена.