错误 TS2346:提供的参数与调用目标的任何签名都不匹配

我是 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 请求并以正确的方式承诺,但我找不到任何好的描述。

stack overflow error TS2346: Supplied parameters do not match any signature of call target
原文答案

答案:

作者头像

快速浏览 Angular 源码:

static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }

表明 toPromise 方法应该收到 Observable<any> (您的电话是: toPromise()

我想这是错误的原因

相关问题