我是 Typescript 和 Angular2 的新手,我正在尝试在 http get 请求上创建承诺,但下面的代码(确切地说 return this.http.get(url)
行给了我错误:
error TS2346: Supplied parameters do not match any signature of call target.
在我的服务中,我有方法 isLoggedIn
isLoggedIn(): Promise<Object> {
return this.http.get('/some/path')
.map((res: Response) => res.json())
.toPromise();
}
然后我想在我的组件中使用它,如下所示:
onInit() {
this.login.isLoggedIn()
.then((data: any) => {
if (data.hasOwnProperty('status') && data.status === 401) {
this.router.navigate(['/Login']);
} else {
this.router.navigate(['/Home'])
}
});
}
我正在寻找如何使用 http 请求并以正确的方式承诺,但我找不到任何好的描述。
快速浏览 Angular 源码:
static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }
表明
toPromise
方法应该收到Observable<any>
(您的电话是:toPromise()
)我想这是错误的原因