2016-10-25 6 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} --- если учетные данные являются ложными

поэтому на данный момент у меня есть два вопроса;

1) Могу ли я взять только логическую часть ответа и установить этот ответ на него, как в коде?

2) Когда я предупреждаю объект ответа, чтобы проверить его правильно или нет, я вижу, что ответ по-прежнему «не определен». Я попытался установить его изначально на false, но эта строка data => this.response = data.login не изменила его значение.

ответ

1

Код alert(this.response); и ниже выполняется до получения ответа от authService.login().

Вам нужно переместить код внутри обратного вызова, переданного 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

стань человеком, я обязательно принимаю этот ответ, но вы быстрее, чем StackOverflow может принять :) вы должны ждать пару минут. Большое спасибо человеку – cano

Смежные вопросы