我怎样才能简单地返回带有角度6的布尔值.subscribe()

时间:2018-06-14 05:06:20

标签: angular

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;
      });
}

如何简单地返回布尔值?

3 个答案:

答案 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电话中返回任何内容,或者您​​也可以根据响应调用任何方法。