Работает на Angular2/Node.Угловая 2 ловли 401 ответ
Для Вход для реселлеров в мы имеем следующие
login(username: string, password: string): Observable<boolean> {
return this.http.post('http://localhost:3000/api/login', { email: username, password: password })
.map((response: Response) => {
// login successful if there's a jwt token in the response
let token = response.json() && response.json().token;
if (token) {
// set token property
this.token = token;
// store username and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username: username, token: token }));
// return true to indicate successful login
return true;
} else {
// return false to indicate failed login
return false;
}
}).catch(err =>{
if (err.status === 401)
{
console.log("caught 401 exception");
return false;
}
});
проблема в том, что я получаю следующую ошибку
Аргумент типа «(ERR: любой) => логическое» не может быть назначен на параметр типа '(err: any, catch: Observable) => ObservableInput'. Тип 'boolean' не присваивается типу 'ObservableInput'.
И я не уверен, что мне нужно изменить, чтобы получить его, чтобы быть в состоянии поймать 401S
Для проверки входа выглядит следующим образом
this.webapiService.login("[email protected]","moneyIsGood").subscribe(result => {
if (result === true) {
console.log('Username or password is correct');
} else {
console.log('Username or password is incorrect');
}
});
редактирования: Кажется, я» m пропуская пункт об использовании .catch и подписаться вместе, но все еще не уверен, как и почему.
вы можете проверить это: [Angular2: обработка ошибок HTTP] (http://stackoverflow.com/questions/36628498/angular2-http-error-handling) –