ngrx-effects - Ngrx 效果中类型 'never' 上不存在属性

标签 ngrx-effects angular8

我正在使用 Angular 8 和 NGRX 8。我有一个操作:

export const loadEnvironment = createAction(
  LicencingActionTypes.LoadEnvironment,
  props<{environment: Environment}>()
);

以及相应的效果:

 loadEnvironment = createEffect(() => this.actions$.pipe(
    ofType(LicencingActionTypes.LoadEnvironment),
    exhaustMap((action) =>
      this.authService.
      getToken(LicencingEffects.getAuthDetailsForEnvironment(action.environment))
        .pipe(
          switchMap((token) => [
            AuthActions.onLogin({token: token}),
            LicencingActions.onLoadEnvironment({environment: action.environment})
          ]),
          catchError(error => of(AuthActions.onLoginError({error: error})))
        )
    )
  ));

我一直在阅读 NGRX 8 ( https://ngrx.io/guide/effects#incorporating-state ) 的文档。

他们的示例表明您可以只使用操作属性而不强制转换操作类型:

...
exhaustMap(action =>
        this.authService.login(action.credentials)
...

Webpack 无法编译,并且出现以下错误:

ERROR in src/app/licencing/effects/licencing.effects.ts(20,69): error TS2339: Property 'environment' does not exist on type 'never'.

Screenshot of code with errors highlighted

我哪里出错了?

最佳答案

Action 必须在 Action 文件底部的类型联合中声明:

const all = union({
  info,
  appError
});

export type CoreActionsUnion = typeof all;

然后在 Effects 类构造函数中注入(inject)该类型作为 Actions 的类型参数:

constructor(private actions$: Actions<CoreActionsUnion>) { }

关于ngrx-effects - Ngrx 效果中类型 'never' 上不存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56966011/

相关文章:

rxjs - 需要帮助理解这个 Ngrx 效果

javascript - 通过 Angular(8.x) 中的类方法更新输入标签的值后,输入标签中的焦点消失

Angular 树摇晃 : How exactly does it work?

angular - 关于这个 Angular + ngRx(效果)的建议 - websocket 事件呢?

javascript - 如何通过运算符链将多个值传递给映射运算符?在 NgRx 效果中

angular - @ngrx 出现“NullInjectorError : No provider for t!”错误

node.js - 在Angular 8中子与父组件之间进行通信

angular - 如何为 formControl 添加元数据?

javascript - Angular 8 - 延迟加载模块 : Error TS1323: Dynamic import is only supported when '--module' flag is 'commonjs' or 'esNext'

angular - Mat-Table(数据源)+ 使用 Ngrx Store/Effects