问题:
当我尝试在 createEffect 方法中使用管道时,收到一条错误消息,指出管道未定义。这很令人困惑,因为管道在我的项目的其他部分(例如在我的服务中)完美运行。 我尝试过的:
Verified all NgRx and RxJS imports in UsersDataEffects.
Cleared the cache and reinstalled node_modules.
Confirmed that provideEffects is properly configured in main.ts.
Checked Actions to ensure it’s injected correctly (the subscribe in the constructor works as expected).
为了在 Angular 18 中注册 ngrx,我在 Main.ts 中进行了操作:
bootstrapApplication(AppComponent, {
providers: [
provideAnimations(),
provideRouter(Routes),
provideHttpClient(),
provideStore(reducers, { metaReducers }),
provideEffects([UsersDataEffects]),
provideToastr(),
...(environment.production ? [] : [
provideStoreDevtools({
maxAge:25,
logOnly: environment.production })])
]
}).catch(err => console.error(err));
在我的用户效果中:
@Injectable({
providedIn: 'root'
})
export class UsersDataEffects {
constructor(private actions$: Actions) {
this.actions$.subscribe(action => {
console.log('Action received:', action);
});
}
loadCurrentUsersData$ = createEffect(() =>
this.actions$.pipe(
ofType(loadUsersAction.LoadCurrentUsersAction),
// Add a simple log to check if the operator chain works
tap(() => console.log('Effect with pipe triggered'))
)
);
}
问题:
在 Angular 18 独立设置中的 NgRx 效果中使用管道时,为什么会出现“未定义”错误? Angular 18 的独立或 NgRx 配置是否存在某些特定情况可能导致此问题?任何见解将不胜感激!
因为我们在 main.ts 中初始化 ngrx,所以仅对于 Effect 文件而不是项目内的其他服务,我们不应该从构造函数中的注入获取“actions$”。我们应该这样注入: private actions$ =ject(Actions);.