Angular 5 - 从订阅返回数据无效,returns 字符串 "true" 而不是预期的 JSON 对象

Angular 5 - Returning data from subscribe not working, returns string "true" instead of expected JSON object

我有一个 AuthService,它有一个订阅 http 请求的功能登录和 returns 一个承诺,它解析为我从 http 请求获得的 JSON 数据。 从一个组件调用这个函数,我调用 .then() 到 console.log() 接收到的数据,但是,出乎意料的是,数据 returns 字符串 "true" 而没有别的。

这是我的代码中的相关片段 -

auth.service.ts :

loginAPI(data) {
  return new Promise((resolve, reject) => {
    this.apiService.apiLogin(data).subscribe(
      data => {
        console.log(data);
        resolve(data);
      },
      error => {
        console.log(error);
        reject();
      }
    )
  });
}

login.component.ts :

login() {
  if (this.loginForm.valid) {
    this.authService.login(this.loginForm.value).then(data => {
      if (data =! null) {
        console.log("Session starting with data: "+data);
        this.sessionService.start(data);
      }
    });
  } else {
    // do something
  }    
}

现在,在 login.component.ts 函数 login() 中,我正在打印数据,但它只在应该打印 JSON 数据的地方打印 "Session starting with data true"。

在函数 loginAPI(data) 中,数据是从另一个名为 apiService 的服务的 HTTP 调用中接收的,其中执行了 http post。

然而,来自 loginAPI(data) 函数的 console.log(data) 正在正确打印 JSON 响应。这意味着数据正在从

正确接收

所以,我哪里错了???

  1. 尝试将“if (data =!null)”替换为“if(data)”。
  2. 如果仍然成功,请查看您从后端发送的数据。您可能正在发送标志而不是数据本身。

您在 LoginComponent 中的 if 语句中有错字。你做作而不是比较。

将 loginComponent 中的 if (data =! null) { 替换为 if (data != null) {