Angular 2.subscribe()返回undefined

时间:2017-06-25 20:31:57

标签: angular

在组件中,我称为dataservice方法'login',它调用post api。 res.json()给出了正确的答案。但是在组件中,当我尝试访问“数据”时,它在订阅中未定义。不知道我在这里做错了什么。请帮忙。

的DataService

login(username, password): Observable<any>{       
    let data = { username: username, password: password};
    return this.http.post( this.domain + '/webservice/login', data)
                    .map( (res: Response) => {
                      res.json()                      
                    })
                    .catch( (error: any) => Observable.throw(error.json().error || 'server error') );

  }

组件

callLoginApi() {
    this.showLoading = true;
    this.dataService.login(this.username,this.password)
         .subscribe(data => {
              console.log(data);
          });
  }  

2 个答案:

答案 0 :(得分:12)

替换

.map((res: Response) => {
  res.json()                      
})   

通过

.map((res: Response) => {
  return res.json();
})  

.map((res: Response) => res.json())  

答案 1 :(得分:0)

已分配值,但未在Visual Studio中显示。如果在添加监视中使用_this而不是this,则可以看到这些值。 JavaScript使用_this。由于某些原因,订阅中的Visual Studio不支持它。