サービスHTTPメソッドを呼び出して、最終的にエラーメッセージを返そうとしていますが、多くのことを試して1週間後に(約束、Observables、...)それを働かせてください。誰かが私を助けてくれることを願っていますか?Angular2コンポーネントのサービスからのログイン関数の呼び出しと返信エラー
私はAngular2の新機能を持ち、このプロジェクトでは単独で作業しています。私の周りの誰もAngularの専門知識を持っていません。私は3日間のトレーニングコースを受けました。
コンポーネント
@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');
}
}
本当にありがとうございます。まさに私が探していたもので、魅力のように働いています! Observablesとコメントを作成してくれてありがとう、それは私にははっきりとはっきりしていることがはっきりしています。 'なしでなければなりません「;;」 '観察可能 ''観察可能でなければならない ' と 'データ=> this.handleLogin(データ):同じコードを使用したい人のため 小修正'data => this.handleLogin(data)' –
Stijn