Проверьте, содержат ли "данные" элементы массива
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return new Promise((resolve, reject) => {
this.securityService.securityActions().subscribe(
data => {debugger;
if(data = this.authorized.find(k => k=='AGREEMENTS_VIEW','AGREEMENTS_INSERT_UPDATE')){
resolve(true);
}
if(data != this.authorized){
resolve(false);
}
},
error => {
Utils.notifyErrors(error, this.notificationsService);
}
)
});
}
Я хочу установить значение true, если данные содержат некоторые элементы "разрешено".
Уполномоченный формируется так:
authorized = [
'AGREEMENTS_VIEW',
'PROSPECTS_VIEW',
'AGREEMENTS_INSERT_UPDATE',
'PRODUCTS_INSERT_UPDATE',
'PROSPECTS_INSERT_UPDATE',
'DOCUMENTS_VIEW',
'DOCUMENTS_INSERT_UPDATE',
];
Так, например, установите true, если данные содержат "AGREEMENTS_VIEW".
Прямо сейчас, если я установлю 2 значения на K, это не работает
2 ответа
Кажется, у вас есть синтаксическая ошибка:
data === this.authorized.find(k => k=='AGREEMENTS_VIEW')
//---^^^-----here
Использование some
, который возвращает истину, если условие соответствует.
return arrayOne.some(itemOfArrayOne => arrayTwo.includes(itemOfArrayOne));
Вы можете заменить includes
с indexOf(XXX) !== -1
,