NGRX action Typescript error TypeError: Cannot read property 'A_' of undefined at Ps.get
NGRX action Typescript error TypeError: Cannot read property 'A_' of undefined at Ps.get
所以我现在有几次遇到这个错误。当尝试将特定类型对象的数组从 ngrx 效果传递到 ngrx 存储中的操作时。就我而言,我想将 AngularFireUploadTask[]
传递给我的操作。以前我在 User
Products is defined in my project 中遇到了同样的错误。我解决这个问题的方法是使用 (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: []});
时,它工作得很好,但是当我添加实际对象时,我得到了错误。
据我了解,这是类型错误,所以类型有问题。我尝试在操作中使用 unknown、any、unknown[] 和 any[] 但没有任何帮助。
所以我找到了解决这个问题的方法。它不是一个完美的解决方案,但它消除了错误。
https://github.com/ngrx/platform/issues/2404
这个问题似乎是由 ngrx 中的不变性检查引起的。一旦禁用它们,错误就会消失。
StoreModule.forRoot({},{
runtimeChecks: {
strictStateImmutability: false,
strictActionImmutability: false,
},
}),
所以我现在有几次遇到这个错误。当尝试将特定类型对象的数组从 ngrx 效果传递到 ngrx 存储中的操作时。就我而言,我想将 AngularFireUploadTask[]
传递给我的操作。以前我在 User
Products is defined in my project 中遇到了同样的错误。我解决这个问题的方法是使用 (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: []});
时,它工作得很好,但是当我添加实际对象时,我得到了错误。
据我了解,这是类型错误,所以类型有问题。我尝试在操作中使用 unknown、any、unknown[] 和 any[] 但没有任何帮助。
所以我找到了解决这个问题的方法。它不是一个完美的解决方案,但它消除了错误。
https://github.com/ngrx/platform/issues/2404
这个问题似乎是由 ngrx 中的不变性检查引起的。一旦禁用它们,错误就会消失。
StoreModule.forRoot({},{
runtimeChecks: {
strictStateImmutability: false,
strictActionImmutability: false,
},
}),