2016-10-25 13 views
1
@Component({ 
    selector: 'login-page', 
    templateUrl: 'login-page.html' 
}) 
export class LoginPage { 

    username: string; 
    password: string; 
    firm: string; 
    response : boolean; 


    constructor(public navCtrl: NavController, public authService: Auth, public loadingCtrl: LoadingController) { 

    } 

login(){ 
      let credentials = [this.username, this.password, this.firm]; 
      this.authService.login(credentials) 
      .subscribe(
       data => this.response = data.login, 
       error => alert(error), 
       () => console.log("Finished") 
      ); 
      alert(this.response); 
      if(this.response){ 
       this.navCtrl.setRoot(HomePage); 
      }else{ 
       alert("check your credentials"); 
      } 
     } 

ログインページをホームページに変更しようとしています。私の残りは私に次のようなjsonの応答を与えます。角度2未定義変数

{"login":true} ---資格情報に該当する場合

{"login":false} ---資格情報が間違っている場合

はので、この時点で私は2つの質問があります。

1)レスポンスのブール値の部分だけを取り、this.responseをコードのように設定できますか?

2)レスポンスオブジェクトが正しく解決されているかどうかを確認するために応答オブジェクトに警告すると、その応答はまだ「未定義」であることがわかります。最初はfalseに設定しようとしましたが、この行data => this.response = data.loginは値を変更しません。

答えて

1

authService.login()からの応答が到着する前にコードalert(this.response);以下が実行されます。あなたはsubscribe

login(){ 
     let credentials = [this.username, this.password, this.firm]; 
     this.authService.login(credentials) 
     .subscribe(
      data => { 
      this.response = data.login; 
       alert(this.response); 
       if(this.response){ 
        this.navCtrl.setRoot(HomePage); 
       }else{ 
        alert("check your credentials"); 
       } 
      }, 
      error => alert(error), 
      () => console.log("Finished") 
     ); 
    } 
+2

YESSの男に渡されたコールバック内のコードを移動する必要が

は、私は間違いなくこの回答を受け入れますが、あなたはstackoverflowのは、あなたが数分間待つ必要があります:)受け入れることができるよりも高速です。ありがとう、たくさんの男 – cano