Wie machen synchronen Aufruf im Winkel 4 in "Komponenten" - Methode
Habe ich eine Eckige 4 login-Anwendung. Ich habe geschrieben der Zugriff auf die Logik in der login.cmponent.ts-Datei und Zugriff auf meine Anmeldung.service.ts-Datei, die ihrerseits wieder Aufrufe eine Authentifizierung service.
Mir beim Aufruf von authenticate-Methode aus meinem login-Komponente, gibt Sie false zurück. Durch die Ausführung restlichen code dann authentication service gibt true zurück, weil wir wissen, Winkel-code ausführen, der in asynchroner Weise.
Dies ist mein code:
Login-Komponente Methode:
this.loginService.setLoginData(
new LoginModel( this.userId, this.bankId, this.password )
).checkIfLoginSuccessfull();
Login.service-Methode:
this.authService
.attemptAuth(credentials);
Authentication Service Methode:
attemptAuth(credentials): void {
this.restService
.post('/authenticate', credentials)
.subscribe(
data => this.setAuth(data.token),
err => this.destroy());
}
Code ist in Ordnung. Aber ich möchte, um Ergebnisse zu dem moment, als ich fertig ausführen checkIfLoginSuccessfull(). Ich weiß, ich bin nicht zu tun oder zu aufrufen von Methoden ( Observablen richtig ).
Bitte helfen. 🙂
Versuchen Sie nicht, um den Anruf sync, lieber lernen, wie Kette verspricht und observablen. Es gibt viele tutorials. Dies ist eine der häufigsten Fragen. Die Frage enthält nicht genügend code, um konkrete Vorschläge.
Es ist nur 3 level-Methode aufrufen. Letzte authService ausführen von code richtig. Wie kann ich die Kette, damit ich Zugriff auf das gewünschte Ergebnis im ersten LoginComponent Methode, sobald die Zeile ausgeführt wird.
InformationsquelleAutor Aakash Kumar | 2017-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie surround diese
in "Beobachten.erstellen".
dann
attemptAuth(credentials): Observable<any> { this.purgeAuth(); return Observable.create(observer => { this.restService.post('/authenticate', credentials) .finally(observer.complete()) .subscribe( data => { observer(data.token); console.log('Observer: ' + data.token ); }, err => observer.error(err) ) })
fügen Sie diese in die oben auf der Seite: import { Observable } "rxjs/Rx";
Es ist schon da. 🙂 trotzdem funktioniert es nicht. Nun es ist die asynchrone nennen obwohl. Beobachtbar ist.create() ist vom Umtausch ausgeschlossen richtig? Das ist, wie ich es mit log-in-service-Methode.authService.attemptAuth(Anmeldeinformationen).subscribe(). Es wird immer ausgeführt, und ich kann sehen, dass die korrekte Ausgabe in der mail. Aber es ist nicht in diesem.authService.attemptAuth(Anmeldeinformationen).subscribe() 's Daten Methode wo ich die code, die ich ausführen möchten.
mein Fehler, ändern "Beobachter(der Daten.token)" zum "Beobachter.nächste(Daten.token)"
InformationsquelleAutor Michał Ochociński