Angular 5 - 从订阅中返回数据不起作用,返回字符串" true"而不是预期的JSON对象

时间:2018-04-23 15:30:08

标签: angular promise observable subscribe

我有一个AuthService,它有一个函数登录,它订阅了http请求并返回一个promise,它解析为我从http请求获得的JSON数据。 从组件调用此函数,我调用.then()到console.log()收到的数据,但是,出乎意料的是,数据返回字符串" 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数据。

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

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

正确接收

那么,我哪里错了???

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您在LoginComponent中的if语句中有拼写错误。你做了一个做作而不是比较。

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