У меня есть компонент, который представляет собой форму входа: loginForm
, которая вызывает мой API:
onLogin(): void {
let username = this.loginForm.value.username;
let password = this.loginForm.value.password;
this.api.login(username, password);
.map(res => res.json())
.subscribe(
this._processData,
);
}
Есть служба, которая вызывает API: loginService
.
login(username: string, password: string): Subscription<any> {
let headers = new Headers();
headers.append("Content-Type", "application/json");
return this.http.put("https://myapi.com", JSON.stringify({ username: username, password: password}), {
headers: headers
})
.map(res => res.json())
.subscribe(
data => console.log(data),
err => console.log(err),
() => console.log("Done")
);
}
Я хочу, чтобы ошибка обрабатывалась внутри loginService. Но результат обратно к методу onLogin
.
Я пробовал различные обработчики сопоставления (как показано) в onLogin, но не смог заставить их работать. Любые мысли о том, что я могу сделать неправильно?
;
перед вызовом.map()
вthis.api.login(username, password);
, иначе вы его не вызываете. Во-вторых, не сопоставляйте дважды, вы уже определили сопоставитель для наблюдаемого в сервисе. В-третьих, вторая подписка, которую вы выполняете (та, что в контроллере), неверна, используйте тот же синтаксис, который вы использовали в службе:.subscribe( data => this.data = data );
- person Langley   schedule 21.01.2016