Angular 18 Standalone:在 NgRx Effects 中使用 RxJS 管道时出现“管道未定义”错误

问题描述 投票:0回答:1

问题:

当我尝试在 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 配置是否存在某些特定情况可能导致此问题?任何见解将不胜感激!

angular pipe ngrx effects
1个回答
0
投票

因为我们在 main.ts 中初始化 ngrx,所以仅对于 Effect 文件而不是项目内的其他服务,我们不应该从构造函数中的注入获取“actions$”。我们应该这样注入: private actions$ =ject(Actions);.

© www.soinside.com 2019 - 2024. All rights reserved.