2017-02-09 1 views
0

Ich bin neu in Ionic und Angular, und aus Jahren der .NET-Entwicklung. Ich versuche ein paar Beispiele online Login-Prototyp mit Ionic 2 zu bauen.Ionic 2 inspizierbare vor der Rückgabe

Ich habe WebAPI im Hintergrund arbeiten einfach zurückgeben JSON wahr oder falsch abhängig davon, ob die Anmeldeinformationen korrekt ist oder nicht.

Ich habe Provider-Authentifizierung wie folgt aussehen:

public login(credentials) { 
    if (credentials.email === null || credentials.password === null) { 
     return Observable.throw("Please insert credentials"); 
    } else { 

     this.result = this.http.post(this.CONST.APIUrl, JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader})).map(res => res.json()) 

     if (this.result) 
     { 
      this.currentUser = new User('Simon', '[email protected]'); 
     } 

     return this.result; 

    }} 

und Login-Seite, die wie folgt aus:.

public login() { 
    this.showLoading() 
    this.auth.login(this.registerCredentials).subscribe(allowed => { 
     if (allowed) { 
     setTimeout(() => { 
     this.loading.dismiss(); 
     this.nav.setRoot(HomePage) 
     }); 
     } else { 
     this.showError("Access Denied"); 
     } 
    }, 
    error => { 
     this.showError(error); 
    }); 
    } 

Im Moment immer protokolliert es Person in Ich verstehe, dass dies, weil dies geschieht .result hat immer einen Wert. Aber wie würde ich Daten überprüfen, die von der API zurückgegeben werden, bevor die Person sich anmelden kann?

Antwort

0

Sie können Observable.do verwenden, um Nebenwirkungen für ein Observable zu erstellen.

In Login-Funktion:

public login(credentials) { 
    if (credentials.email === null || credentials.password === null) { 
     return Observable.throw("Please insert credentials"); 
    } else { 

     this.result = this.http.post(this.CONST.APIUrl, 
      JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader})) 
      .map(res => res.json()) 
      .do(userData=>{ 
       //check userData and set current user 
       this.currentUser = new User('Simon', '[email protected]'); 
       return userData;//make sure to return the value to subscribe 
      }); 
    return result; 
    }}