我有一个组件,它使用服务提交一些数据。
ChangeDetectionStrategy.OnPush
,但奇怪的事情正在发生:
-
:
next
调用回调,
formStatus
接口刷新
有了这个变化。
-
失败
error
调用回调,
更改为“error”,但更改接口
不刷新
据我所知,接口不应该刷新,因为我使用
查NGE检测策略.OnPush
那么,为什么在
?
当服务中发生错误时,我希望在错误回调中接收它。
submit() {
this.formStatus = 'sending';
this._service.create(data).subscribe({
next: () => {
this.formStatus = 'success';
// interface refreshes
},
error: () => {
this.formStatus = 'error';
// interface does not refresh
console.log(this.formStatus); // prints 'error'
},
});
}
<div *ngIf="formStatus === 'success'">
...
</div>
服务
调用API并使用
errorUtil.handle
create(requestData: Data): Observable<Data> {
return this._http
.post<HttpResponse<CreateResponse>>(
MY_API.createUrl,
JSON.stringify(requestData)
)
.pipe(
catchError(this._errorUtil.handle()),
map(data => this.onSuccessCreate(requestData, data))
);
}
错误处理程序
handle<T>(): (error: HttpErrorResponse, caught?: Observable<T>) => Observable<T> {
return (error: HttpErrorResponse, caught?: Observable<T>) => {
return throwError();
};
}
我试过改变
return throwError();
throw throwError();
但他们的行为是一样的。