Проверьте, содержат ли "данные" элементы массива

  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,

Другие вопросы по тегам