Обновление Если я поправлю свой api на retunr res.status (200) вместо res.status (401), тогда я получу свой код для работы , Я предполагаю, что необработанная ошибка связана с тем, что я возвращаю 401, но как я могу поймать и использовать 401, если я получаю логическую ошибку, добавляющую .catch к моему .map?Получите необработанную ошибку обещания, но когда я добавляю catch, я получаю тип boolean не назначается
Im пытается сделать охранник. Мой метод заключается в запросе api, который выполняет некоторую работу на стороне сервера, и возвращает тело json с некоторой информацией пользователя и статусом true или состояние false, если веб-сайт не может быть проверен.
В моем угловом коде у меня есть
canActivate() {
return this.http.get(`http://localhost:3000/api/user/status`, options)
// return this.http.get(`/api/user/status`, options)
.map(res => {
if(!res){
this.router.navigate(['/login']);
return false;
}
let user: any = res.json();
return true;
})
}
Если я запускаю свой код с правильным токеном, я получаю аутентификацию страницы. Если я изменю токен, мой тест POSTMAN вернет status: false
, но когда я использую свой сайт, я получаю ошибки, говоря, что у меня есть необработанные ошибки.
Так я пытаюсь добавить улов
.catch(e => {
this.router.navigate(['/login']);
return false;
})
, но я получаю ошибку компиляции говоря "Аргумент типа„(е: любой) => логической“не может быть назначена для параметра типа«(ERR: любой , catch: Observable) => ObservableInput '. Тип «boolean» не присваивается типу «ObservableInput».) «
Любой совет?