-1
  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',
    ];

因此,例如,如果数据包含“AGREEMENTS_VIEW”,则设置为 true。

现在,如果我在 K 上设置 2 值,它就不起作用

4

2 回答 2

0

使用some,如果条件匹配,则返回 true。

return arrayOne.some(itemOfArrayOne => arrayTwo.includes(itemOfArrayOne));

您可以替换includesindexOf(XXX) !== -1.

于 2018-08-13T10:24:49.957 回答
0

看来您有语法错误:

data === this.authorized.find(k => k=='AGREEMENTS_VIEW')
//---^^^-----here
于 2018-08-13T10:26:22.520 回答