서비스 HTTP 메서드를 호출하고 결국 오류 메시지를 반환하려고 시도하지만 많은 것을 시도한 후 (약속, Observables, ...) 그것을 작동시키지 마십시오. 아무도 나를 도울 수 있기를 바랍니다.Angular2 구성 요소의 서비스에서 로그인 함수를 호출하고 반환 오류를 호출합니다.
저는 Angular2에 처음 익숙해졌으며이 프로젝트에서 혼자 일하고 있습니다. 내 주변에 다른 각도 전문가는 없었습니다. 나는 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 (데이터)' –
Stijn