Делаю навигацию с авторизацией. Я сделал что-то вроде этого
run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {
let requiredRoles = navigationInstruction.getAllInstructions()
.map(i => i.config.settings.roles)[0];
toastr.success('TEST1');
let isUserInRole = requiredRoles?
requiredRoles.some(r => r === this.userIdentity.role) : true;
toastr.success('TEST2');//LINE IT`S NOT EXECUTED
return isUserInRole? next() : next.cancel(new Redirect('users/login'));
}
обязательные роли — я проверил, и мне возвращается значение
В строку r => r === this.userIdentity.role
В моем визуальном коде есть сообщение вроде: Parameter 'r' implicitly has an 'any' type, but a better type may be inferred from usage.ts(7044)
Я думаю, что вы можете сделать, это привести .roles)[0]
к строке (я думаю, по внешнему виду вашего кода)
run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {
let requiredRoles = navigationInstruction.getAllInstructions()
.map(i => i.config.settings.roles)[0] as string;
...
}
Обновлено: если роли представляют собой массив строк, тогда ваш код должен быть таким
run(navigationInstruction: NavigationInstruction, next: Next) : Promise<any> {
let requiredRoles = navigationInstruction.getAllInstructions()
.map(i => i.config.settings.roles)[0] as string[];
...
}
Это должно устранить проблему.