检查“数据”是否包含数组项

时间:2018-08-13 10:23:15

标签: arrays angular typescript angular-route-guards

  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的值不起作用

2 个答案:

答案 0 :(得分:0)

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

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

您可以将includes替换为indexOf(XXX) !== -1

答案 1 :(得分:0)

似乎您有语法错误:

data === this.authorized.find(k => k=='AGREEMENTS_VIEW')
//---^^^-----here