2017-05-30 7 views
0

Ich möchte Daten erhalten, wenn Eingabe username === responseApi.user von api, aber mein Code erhalten alle Daten Benutzer von api. Helfen Sie mir Daten tks u hier zu bekommen, ist ein Teil meines Codes von service.tsSo erhalten Sie Daten von MockAPI

 @Injectable() 
     export class AuthenticationService { 
      private apiUrl = "http://5925399f21cf650011fddc7d.mockapi.io/api/users/"; 
      private users: any[] 
      constructor(
      private _router: Router, private _http: Http) { } 

     getList(): Observable<any[]> { 
     return this._http.get(this.apiUrl).map((response: Response) => response.json()) 

     } 
     logout() { 
     localStorage.removeItem("user"); 
     this._router.navigate(['Login']); 
     } 

     login(user) { 
    this._http.get(this.apiUrl).map((response: Response) => response.json()).subscribe((response: any) => { 
    this.users = response; 
     console.log(this.users) 
     console.log(user.user) 
     var authenticatedUser = this.users.find(u => u.user === user.user) 
     var authenticatedUser1 = this.users.find(u => u.password === user.password); 
     if (authenticatedUser && authenticatedUser1) { 
     localStorage.setItem('user', authenticatedUser) 
     this._router.navigate(['Home']); 

     return true; 
     } 
     return false; 
    } 


    ) 


    } 
+0

und Ihr Komponentencode ist ....? – Alex

Antwort

0

Lassen Sie Ihren Dienst eine beobachtbare zurückzukehren. Yo kann nicht synchron damit umgehen. Ihre Login-Funktion könnte wie folgt aussehen:

login(user) { 
    return this._http.get(this.apiUrl) 
     .map(response => response.json()) 
     .map(users => users.find(u => u.user === user.user && u.password === user.password) // finds authenticatedUser 
     .filter(authenticatedUser => !!authenticatedUser) // filters null and undefined 
     .do(authenticatedUser => localStorage.setItem('user', authenticatedUser)) 
     .do(() => this._router.navigate(['Home'])); 
} 

diese Methode in Ihrer Komponente abonnieren.

Verwandte Themen