Rxjs ngrx效果-catchError:返回的不会结束流,并且API调用不会重新运行

Rxjs ngrx效果-catchError:返回的不会结束流,并且API调用不会重新运行,rxjs,ngrx,angular-httpclient,ngrx-effects,Rxjs,Ngrx,Angular Httpclient,Ngrx Effects,我对NgRX效应有如下影响: $createOrganization=createEffect(()=> 此.actions$管道( 类型(fromOrganizationActions.createOrganization), switchMap((数据)=>this.organization.createOrganization(数据)), map((response)=>fromOrganizationActions.createOrganizationSuccess({orgId:res

我对NgRX效应有如下影响:

$createOrganization=createEffect(()=>
此.actions$管道(
类型(fromOrganizationActions.createOrganization),
switchMap((数据)=>this.organization.createOrganization(数据)),
map((response)=>fromOrganizationActions.createOrganizationSuccess({orgId:response.id})),
catchError((错误)=>{
返回(fromOrganizationActions.CreateOrganizationError(错误));
})
)
);
但是,当触发
catchError
时,即在
this.organization.createOrganization
返回400错误的实例中,我的流似乎永远不会结束

此时将触发OrganizationActions.CreateOrganizationError(error)中的操作,并由此触发my reducer。。。但是,如果我重新触发OrganizationActions.createOrganization的
效果,该效果将运行,但API调用不会再次执行

如果我按如下方式配置它,并手动分派它,它就会工作:

$createOrganization=createEffect(()=>
此.actions$管道(
类型(fromOrganizationActions.createOrganization),
switchMap((数据)=>this.organization.createOrganization(数据)),
map((response)=>fromOrganizationActions.createOrganizationSuccess({orgId:response.id})),
catchError((错误)=>{
this.store.dispatch(fromOrganizationActions.CreateOrganizationError(错误));
返回投掷器(错误);
})
)
);
但网上的其他例子表明,第一种方法应该有效,但它不适合我,我不明白为什么我的流永远不会结束


有人能告诉我为什么我的流在第一个实例中永远不会结束吗?

捕获错误应该添加到内部可观察对象中

$createOrganisation = createEffect(() =>
  this.actions$.pipe(
    ofType(fromOrganisationActions.createOrganisation),
    switchMap((data) => this.organisation.createOrganisation(data).pipe (
      map((response) => 
        fromOrganisationActions.createOrganisationSuccess({ orgId: response.id })),
      catchError((error) => {
        return of(fromOrganisationActions.createOrganisationError(error));
      })
    )),
  )
);

这些错误可以通过规则的更多细节来发现。

Nice。谢谢!在内部可观察对象上有
catchError
的实际区别是什么?我认为在这种情况下,观测结果是一样的?我现在正在安装那个插件!