.subscribe()函数接收值但无法进入功能块

时间:2019-03-26 14:47:07

标签: typescript spring-boot observable angular7

使用可观察的rxjs从前端从springboot后端调用服务。甚至考虑过使用.subscribe函数调用此服务,该服务成功返回一个值,但我无法进入subscription块,它直接到达该块的末尾。

login.component.ts

validate() {
    console.log('need to validate');
    this.loginService.checkLogin(this.userName, this.pwd).subscribe(resp => {
      console.log(resp);
      if (resp === 'success') {
        this.router.navigateByUrl('/home');
      }
    }, error => {
      this.toastr.error(error.error.message);
    });
  }

login.service.ts

export class LoginServiceService {

  url = 'http://localhost:8089/login/check';
  constructor( private http: HttpClient) { }

   public checkLogin(userName, password): Observable <any> {
    let headersValue = new HttpHeaders();
    headersValue = headersValue.set('Access-Control-Allow-Origin', '*');
    headersValue = headersValue.set('Content-Type', 'application/json');
    headersValue = headersValue.set('userName', userName);
    headersValue = headersValue.set('password', password);
    return this.http.get<any[]>(this.url, { headers: headersValue });
}
}

预期结果:它应该输入subscription块并在控制台中显示resp,还应该输入if块。

实际结果: 仅“显示需要验证”。

,并在错误检查后直接到达程序段结尾。

1 个答案:

答案 0 :(得分:0)

我认为您的问题可能与标题有关。我不确定您是否需要它们,但更具体地说,我认为userName和password根本不属于它们。它们可能应该是参数。我认为以下内容可能会对您有所帮助:

public checkLogin(userName, password): Observable <any> {
    let headersValue = new HttpHeaders();
    headersValue = headersValue.set('Access-Control-Allow-Origin', '*');
    headersValue = headersValue.set('Content-Type', 'application/json');
    const params = { userName, password };
    return this.http.get<any[]>(this.url, { headers: headersValue, params });
}