我有这段代码片段:
我注意到如果我不使用HttpHeaders,它就能正常工作:
然而,在这种情况下,我可能需要使用HttpHeaders...有什么解决方法吗?
SubmitTransaction(transNumber: string, transactionRequest: ITransactionRequestObj): Observable<TransactionResponse> {
this.body = JSON.stringify(transactionRequest);
this.headers = new HttpHeaders().set('Content-Type', 'application/json');
this.headers.append('Accept', 'application/json');
this.options = new RequestOptions({headers: this.headers});
return this.http.post<TransactionResponse>(this.baseUrl + '/transactions/' + transNumber + '/new', this.body, this.options)
.pipe(catchError((e) => this.errorHandler(e)));
}
我只是将我的项目从Angular 5升级到Angular 6,并将.catch((e) => this.errorHandler(e));
更改为.pipe(catchError((e) => this.errorHandler(e)));
。然而,对于这个特定的方法,我得到了以下TypeScript错误。
错误:
[ts]
Type 'Observable<HttpEvent<TransactionResponse>>' is not assignable to type 'Observable<TransactionResponse>'.
Type 'HttpEvent<TransactionResponse>' is not assignable to type 'TransactionResponse'.
Type 'HttpSentEvent' is not assignable to type 'TransactionResponse'.
Property '_transactionNumber' is missing in type 'HttpSentEvent'.
我不确定在这种情况下应该做什么。上面的代码片段在Angular 5中可以正常工作。我需要怎么做才能将其修复为适用于Angular 6?
编辑:
errorHandler(error: HttpErrorResponse) {
return throwError(error.message || 'Server Error');
}
我注意到如果我不使用HttpHeaders,它就能正常工作:
SubmitTransaction(transNumber: string, transactionRequest: ITransactionRequestObj): Observable<TransactionResponse> {
this.body = JSON.stringify(transactionRequest);
this.headers = new HttpHeaders().set('Content-Type', 'application/json');
this.headers.append('Accept', 'application/json');
this.options = new RequestOptions({headers: this.headers});
return this.http.post<TransactionResponse>(this.baseUrl + '/transactions/' + transNumber + '/new', transactionRequest)
.pipe(catchError((e) => this.errorHandler(e)));
}
然而,在这种情况下,我可能需要使用HttpHeaders...有什么解决方法吗?