Ich versuche, eine HTTP-Service-Methode aufrufen und schließlich eine Fehlermeldung zurück, aber nach einer Woche des Ausprobierens vieler Dinge (Promises, Observables, ...) kann ich ' t es zur Arbeit bringen. Ich hoffe, dass mir jemand helfen kann?Angular2 Call-Login-Funktion vom Dienst in der Komponente und Fehler zurück
Ich bin ein wenig neu bei Angular2 und arbeite alleine an diesem Projekt, mit niemandem sonst mit angularem Fachwissen. Ich habe einen 3-tägigen Trainingskurs bekommen.
Komponente
@Component({
templateUrl: 'build/pages/login/login.html'
})
export class LoginPage {
error: string;
constructor(private navController: NavController, private auth: AuthService) {
}
private login(credentials) {
// Method calling the login service
// Could return an error, or nothing
this.error = this.auth.login(credentials);
// If there is no error and the user is set, go to other page
// This check is executed before previous login methode is finished...
if (!this.error && this.auth.user) {
this.navController.setRoot(OverviewPage);
}
}
}
AuthService
@Injectable()
export class AuthService {
private LOGIN_URL: string = "http://localhost:8080/rest/auth";
private USER_URL: string = "http://localhost:8080/rest/user";
private contentHeader: Headers = new Headers({
"Content-Type": "application/json"
});
errorMessage: string;
user: User;
constructor(private http: Http) {
}
login(credentials) {
let contentHeader = new Headers({
"Content-Type": "application/json"
});
this.http.post(this.LOGIN_URL, JSON.stringify(credentials), { headers: contentHeader })
.map(res => res.json())
.catch(this.handleError)
.subscribe(
data => this.handleLogin(data),
err => this.handleError
);
// could return an errorMessage or nothing/null
return this.errorMessage;
}
private handleLogin(data) {
let token = data.token;
this.getAccount(token);
}
private getAccount(token) {
let authHeader = new Headers({
"Content-Type": "application/json",
"X-Auth-Token": token
});
this.http.get(this.USER_URL, { headers: authHeader })
.map(res => res.json())
.catch(this.handleError)
.subscribe(
data => this.setUser(data),
err => this.errorMessage = err
);
}
private setUser(data) {
this.user = new User(data.naam, data.voornaam);
}
private handleError(error) {
// this.errorMessage is not saved?
if (error.status === 401) {
this.errorMessage = '401';
} else if (error.status === 404) {
this.errorMessage = '404';
} else {
this.errorMessage = 'Server error';
}
return Observable.throw(error.json() || 'Server error');
}
}
Vielen Dank für Ihre Antwort! Es ist genau das, was ich gesucht und wie ein Charme gearbeitet habe! Und ein großes Dankeschön für die Ausarbeitung der Observables und die Kommentare, es macht mir so viel klarer, was genau Happing ist. Kleine Lösung für Menschen, die den gleichen Code verwenden möchten: 'beobachtbare' 'sollte beobachtbare ' und 'data => this.handleLogin (Daten) sein; ';'' ohne sein sollte 'data => this.handleLogin (Daten)' –
Stijn