Angular 2.subscribe()返回undefined

Viv*_*vek 3 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') );

  }
Run Code Online (Sandbox Code Playgroud)

组件:

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

JB *_*zet 12

更换

.map((res: Response) => {
  res.json()                      
})   
Run Code Online (Sandbox Code Playgroud)

通过

.map((res: Response) => {
  return res.json();
})  
Run Code Online (Sandbox Code Playgroud)

或者

.map((res: Response) => res.json())  
Run Code Online (Sandbox Code Playgroud)

  • 不,没有.您可能正在使用`.map((res:Response)=> {res.json();})`这是非常不同的,因为该块没有返回任何内容.如果没有块,则返回是隐式的.如果有,你需要返回. (2认同)