【问题标题】:Upgrade from Angular 5.2 to 7 broke Post methods从 Angular 5.2 升级到 7 破坏了 Post 方法
【发布时间】:2019-06-29 09:32:47
【问题描述】:

'(error: HttpErrorResponse) => void' 类型的参数不是 可分配给类型参数'(错误:任何,捕获: 可观察>) => 可观察输入'。类型 'void' 不可分配给类型 'ObservableInput'

GetFullAddress(addressModel: FullAddressLookupModel): Observable<AddressModel> {
    return this.httpClient.post<AddressModel>(this.Domain + "api/addressSearch/confirmAddressSelection",
        JSON.stringify(addressModel), this.httpOptions ).pipe(
            catchError(this.handleError)
        );
}



private handleError(error: HttpErrorResponse) {
    return throwError(
        'Something bad happened; please try again later.');
}

【问题讨论】:

  • handleError 似乎没有返回预期的返回值。
  • 嗯,catcherror 需要像catchError((err) =&gt; { console.error('Error :', err.message}); catchError((err) =&gt; { this.handleError(err)}); 这样的对象

标签: angular typescript http


【解决方案1】:

请试试这个:

public GetFullAddress(addressModel: FullAddressLookupModel): Promise<AddressModel> {
    const promise: Promise<AddressModel> = new Promise<AddressModel>((resolve, reject) => {
        this.httpClient.post<AddressModel>(`${this.Domain}api/addressSearch/confirmAddressSelection`, JSON.stringify(addressModel), this.httpOptions ).pipe(
            catchError(this.handleError)
        )).toPromise().then((response) => {
            resolve(response);
        }, (err) => {
            reject(err);
        });
    });

    return promise;
}

出现以下错误

【讨论】:

  • “HttpEvent”类型的参数不可分配给“AddressModel |”类型的参数PromiseLike'。类型 'HttpSentEvent' 不可分配给类型 'AddressModel | PromiseLike'。 “HttpSentEvent”类型中缺少属性“then”,但在“PromiseLike 类型中是必需的
  • 抱歉,使用 http 代替 httpClient - 立即尝试
  • 我使用的是httpClient
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多