首页 > 解决方案 > 角度路由错误 - TypeError:无法分配给只读属性“_futureSnapshot”

问题描述

我有一个设置了 NgRx 的 Angular 项目。我想调度导航操作,这样我就不必将路由器和 ActivatedRoute 注入到组件中,并且一直在关注 Todd Mottos 的精彩视频。

设置了一个 ngrx 效果来监听导航操作。这是在根应用程序级别设置的。

// NgRx Effect
navigate$ = createEffect(() => {
   ... effect code
   // important bit
   this.router.navigate(path, { queryParams, ...extras });
}, { dispatch: false });

但是,我今天遇到了一个问题,在尝试使用来自功能中的组件(不是根级别)的相对路径分派导航操作时出现错误。像往常一样,我从功能组件传入 ActivatedRoute,以便可以从相对路径计算实际路径:

this.store.dispatch(new fromRootStore.Go({
  path: ['..', 0],
  extras: { relativeTo: this.route }
});

但是,我收到以下错误:

无法分配给对象“[object Object]”的只读属性“_futureSnapshot”

直接在功能组件中使用路由器,并传递组件的 ActivatedRoute 工作正常:

this.router.navigate(['..', 0], { relativeTo: this.route });

使用绝对路径调度路由操作也可以正常工作:

this.store.dispatch(new fromRootStore.Go({ path: '/absolute/path' });

这是否与路由器位于应用程序的根级别,但 ActivatedSnapshot 来自功能中的组件这一事实有关?感谢您对此的任何帮助。

标签: angularngrx

解决方案


推荐阅读