Angular的新手,我找不到任何可以帮助我的事情,非常感谢您的帮助。
喜欢在没有rxjs的情况下处理这种情况;即。 .pipe(地图(......))
api回应:
status(200){token:" ..." } - 或 - status(400)
login(credentials) {
return this.http.post('.../api/authenticate', credentials)
.subscribe(
response => {
localStorage.setItem('token', response.token);
return true;
},
() => {
return false;
});
}
如何简单地返回布尔值?
答案 0 :(得分:2)
不,这不是正确的实施。当您点击子订阅方法时,它会自动在后台点击API而不会卡住脚本(通过不同的线程)。你可以使用回调方法来实现你想要的结果,检查下面提到的逻辑,
您的登录功能应如下所示
login(credentials, callback) {
return this.http.post('.../api/authenticate', credentials)
.subscribe(
(response: any) => {
callback(response.status);
localStorage.setItem('token', response.token);
});
}
这个调用此函数,
login(credentials, (status) => {
console.log(status);
});
答案 1 :(得分:1)
如果你想要回复状态,你可以在你的帖子中添加一个json对象。例如:
return this.http.post(
this.configUrl, { observe: 'response' });
答案 2 :(得分:0)
您需要在subscribe
来电添加逻辑,以根据您所说的回复进行导航。
login(credentials) {
return this.http.post('.../api/authenticate', credentials)
.subscribe(
response => {
localStorage.setItem('token', response.token);
this.router.navigateByUrl('home');
},
() => {
alert('Error message here');
});
}
无需从subscribe
电话中返回任何内容,或者您也可以根据响应调用任何方法。