【问题标题】:error TS2346: Supplied parameters do not match any signature of call target错误 TS2346:提供的参数与调用目标的任何签名都不匹配
【发布时间】:2016-02-15 06:48:24
【问题描述】:

我是 Typescript 和 Angular2 的新手,我正在尝试在 http get 请求上创建 promise,但下面的代码(确切地说是 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 请求并以正确的方式承诺,但我找不到任何好的描述。

【问题讨论】:

    标签: http request typescript promise angular


    【解决方案1】:

    快速浏览 Angular 源代码:

    static toPromise(obj: Observable&lt;any&gt;): Promise&lt;any&gt; { return (&lt;any&gt;obj).toPromise(); }

    显示toPromise 方法应该收到Observable&lt;any&gt;(您的电话是:toPromise()

    我猜这就是错误的原因

    【讨论】:

    • 所以我应该将参数放入 toPromise() 方法中,但实际上我不知道在 http.get 请求之后应该放什么。 A2 的文档现在很差:/ 我正在通过互联网寻找解决方案
    • 我也会寻找这个。为什么不坚持使用 Observables?
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2017-04-26
    • 2016-06-09
    • 2016-11-14
    • 2017-06-08
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多