I have a v.14 project and I just upgraded it to v.15. But I get this weird error now in runtime:
@Injectable()
export class AppEffects {
constructor(private readonly actions$: Actions, private readonly router: Router, private readonly errDlgSvc: IlgErrorDialogService) {}
navigateToRoot$ = createEffect(
() => {
return this.actions$.pipe(
ofType(GlobalActions.navigateToRoot),
tap(() => this.router.navigate([""]))
{ dispatch: false }
showError$ = createEffect(() => {
return this.actions$.pipe(
ofType(setError),
map(({ errorObj }) => ({ message: errorObj.errorMsg, title: "Error" } as ErrorMessageInfo)),
exhaustMap((errMsgInfo) => this.errDlgSvc.showErrorDialog$(errMsgInfo).pipe(map((dlgRes) => clearError())))
Here's how it's initialized:
@NgModule({
declarations: [AppComponent, HomeComponent],
imports: [
BrowserModule,
AppRoutingModule,
AppAuthModule.forRoot(),
StoreModule.forRoot(ROOT_REDUCERS, {
metaReducers,
runtimeChecks: {
// strictActionSerializability: true, ===========> enabling this causes reducers to break, so state do not change!
strictStateImmutability: true,
strictActionImmutability: true,
// strictStateSerializability: true, ====> doesn't work
strictActionWithinNgZone: true,
strictActionTypeUniqueness: true
EffectsModule.forRoot(AppEffects),
StoreRouterConnectingModule.forRoot(),
StoreDevtoolsModule.instrument({ maxAge: 25, logOnly: environment.production })
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
{ provide: ErrorHandler, useClass: ErrorHandlerService },
OverlayService,
provide: GlobalFacadeService,
useClass: GlobalStateService
bootstrap: [AppComponent]
export class AppModule {}
Minimal reproduction of the bug/regression with instructions
Probably any project that has a global app state would have this problem.
Versions of NgRx, Angular, Node, affected browser(s) and operating system(s)
NgRx: 15.0.0
Angular: 15.0.2
Windows 11 x64
Other information
No response
I would be willing to submit a PR to fix this issue