【发布时间】:2016-04-28 02:35:42
【问题描述】:
我有一个登录表单的组件: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 中尝试了各种映射处理程序(如图所示),但无法使其正常工作。关于我可能做错的任何想法?
【问题讨论】:
-
首先,在
this.api.login(username, password);中调用.map()之前删除;,否则你不会调用它。其次,不要映射两次,您已经将映射器定义为服务中的可观察对象。第三,您正在执行的第二次订阅(控制器中的那个)是错误的,请使用您在服务中使用的相同语法:.subscribe( data => this.data = data );
标签: angularjs angular angular2-services