代码之家  ›  专栏  ›  技术社区  ›  adrisons

误差角度观测不刷新与Cha的接口NGE检测策略.OnPush

  •  0
  • adrisons  · 技术社区  · 6 年前

    我有一个组件,它使用服务提交一些数据。

    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(); 但他们的行为是一样的。

    0 回复  |  直到 6 年前
    推荐文章