【问题标题】:NGRX action Typescript error TypeError: Cannot read property 'A_' of undefined at Ps.getNGRX 操作 Typescript 错误 TypeError:无法读取 Ps.get 处未定义的属性“A_”
【发布时间】:2021-01-17 17:40:36
【问题描述】:

所以我现在多次收到此错误。当尝试将特定类型对象的数组传递给来自 ngrx 效果的 ngrx 存储中的操作时。就我而言,我想将AngularFireUploadTask[] 传递给我的操作。以前我在我的项目中定义了User Products 时遇到了同样的错误。我摆脱这个问题的方法是使用 (as User) 将对象转换为有效的产品。这似乎在这里不起作用。

请帮助我理解这个问题。该错误没有提供太多信息。 这是我的行动:

 export const loadUploadSuccess = createAction(
  '[Upload/API] Load Upload Success',
  props<{ upload: AngularFireUploadTask[] }>()
);

这是效果:

init$ = createEffect(() =>
    this.actions$.pipe(
      ofType(UploadActions.init),
      fetch({
        run: (action) => {
          const uploads: AngularFireUploadTask[] = [];
          action.files.forEach((file) => {
            uploads.push(this.firebaseStorage.startUpload(file));
          });
          console.log(uploads);
          return UploadActions.loadUploadSuccess({upload: uploads});
        },
        onError: (action, error) => {
          console.error('Error', error);
          return UploadActions.loadUploadFailure({ error });
        },
      })
    )
  );

为了以防万一,我将包含减速器。

  on(UploadActions.loadUploadSuccess, (state, { upload }) => {
    console.log('yooo', upload);
    return uploadAdapter.setAll(upload as UploadEntity[], { ...state, loaded: true });
  }),

当我将空数组传递给 UploadActions.loadUploadSuccess({upload: []}); 时,它工作得很好,但是当我添加实际对象时,我得到了错误。

据我了解,这是 TypeError,所以类型有问题。我尝试在实际中使用 unknown、any、unknown[] 和 any[],但没有任何帮助。

【问题讨论】:

    标签: angular typescript ngrx ngrx-effects


    【解决方案1】:

    所以我找到了解决这个问题的方法。它不是一个完美的解决方案,但它消除了错误。

    https://github.com/ngrx/platform/issues/2404

    这个问题似乎是由 ngrx 中的不变性检查引起的。一旦禁用它们,错误就会消失。

    StoreModule.forRoot({},{
      runtimeChecks: {
        strictStateImmutability: false,
        strictActionImmutability: false,
      },
    }),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-13
      • 2022-01-20
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 2022-12-24
      相关资源
      最近更新 更多