angular 2 订阅 observable 未定义

angular 2 subscribe to observable getting undefined

我在 angular 2 应用程序中有一个服务和一个组件,我在服务中得到响应并且也能够登录到控制台,但它在组件中显示未定义。我在这里做什么错了?谁能指出错误。 提前致谢

服务:

    import { Injectable } from '@angular/core'
import { Http, Response,Headers } from '@angular/http'
import { Observable } from 'rxjs/Observable'
import "rxjs/add/operator/map"
import "rxjs/add/operator/catch"
import "rxjs/add/Observable/throw"

@Injectable()
export class LoginService {
    public logResult;
    private _url = "http://localhost:53798/api/Login?uname=abcd&pass=1"


    constructor(private _http: Http) { }

getEmployees(userID:string,passWord:string) : Observable<boolean>{

    return this._http.get(this._url).map((response: Response) => 
        {
           let logResult= response.json();
           logResult.forEach(re=>{

              if(re.LoginResult=="Success")
              {
                  console.log('Success');//this is being written to console
                  return<boolean> true;
              }
              else{
                  console.log('fail');
                  return<boolean> false;
              }
            })
    }).catch(this._errorHandler);


}
_errorHandler(error: Response) {
    console.log(error);
    return Observable.throw(error || "Server not Found")
}
}

组件:

 ValidateLogin(){


  this._loginService.getEmployees(this.loginForm.value.UserId,this.loginForm.value.password)

  .subscribe(resLoginData => {
      console.log(resLoginData);//resLoginData is undefined
      if(resLoginData===true)
      { 
          console.log('Success');
          this.router.navigateByUrl('/Home');}
      else{
        console.log('Fail');
        this.router.navigateByUrl('/Login');
      }
        resLoginError => this.errorMsg = resLoginError})           
 }     
}

你有没有在你的应用中安装 rxjs 和 zone-js

import { Injectable } from "@angular/core";
        import { Http, Response, Headers, RequestOptions, URLSearchParams } from "@angular/http";
        import { Observable } from "rxjs/Observable";
        import "rxjs/Rx";

    @Injectable()
    export class LoginService {
        public logResult;
        private _url = "http://localhost:53798/api/Login?uname=abcd&pass=1"
     constructor(private _http: Http) { }

    getEmployees(userID:string,passWord:string) : Observable<boolean>{

        return this._http.get(this._url).map((response: Response) => 
            {
               let logResult= response.json();
               logResult.forEach(re=>{

                  if(re.LoginResult=="Success")
                  {
                      console.log('Success');//this is being written to console
                      return true;
                  }
                  else{
                      console.log('fail');
                      return false;
                  }
                })
        }).catch(this._errorHandler);


    }
    _errorHandler(error: Response) {
        console.log(error);
        return Observable.throw(error || "Server not Found")
    }
    }

forEach 块不会在 return 语句处停止。

let logResult= response.json().data;
let result = false;
logResult.forEach(re=>{

    if(re.LoginResult=="Success")
    {
        // console.log('Success');//this is being written to console
        result = true;
    }
    else{
        // console.log('fail');
        result false;
    }
});

return result;     // return the true result out of forEach.

您还应该将 let logResult= response.json(); 更改为 let logResult= response.json().data;,因为 http 的方法将 return 数据这样处理。