Έχω αυτό το απόσπασμα κώδικα:
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... ποια είναι η λύση σε αυτό το σενάριο;