Angular:通过链接参数数组传递路由数据

标签 angular angular6 angular-routing

在 Angular 中,我可以像这样用数据定义一个路由:

{
 path: '/user/:id', 
 component: UserComponent, 
 data: {cache: {use: true, class: MyCacheClass}}
}

然后我就可以在我的组件中注入(inject) ActivatedRoute 并访问路由数据。

我还可以使用 routerLink 指令通过链接参数数组链接到模板中的组件,如下所示:

<a [routerLink]="['/user', id]">Profile</a>

如果我想通过模板 routerLink 传递路由数据,我不确定如何。路线数据不是路线的一部分,所以我做不到:

<a [routerLink]="['/user', id, 
{cache: {use: true, class: MyCacheClass}}]">
Profile</a>

如果我这样做,Angular 将尝试导航到:

/user/123;cache=[Object]

能否通过 routerLink 指令及其链接参数数组传递路由数据,以便我可以从 ActivatedRoute 获取它?

PS:需要说明的是,我并不是在询问如何在 url 本身内对对象进行编码;我在问如何将它传递给 routerLink,以便我可以通过注入(inject) ActivatedRouteActivatedRouteSnapshot 并获取它们的 data 属性来获取它

最佳答案

你不能。它违背了 Angular Router 的设计。

人们使用状态管理库(例如 NGRX/NGXS/Akita 或自行设计的服务)来处理这种模式。

如果您的对象是持久的,我建议创建一些散列映射,并在 URL 中对 key 进行编码。这样当您从书签等导航时,可以恢复准确的状态。

关于Angular:通过链接参数数组传递路由数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51987371/

相关文章:

angular - http.get observable : what is the third argument? 上的订阅方法

javascript - Angular组件继承,保留父html

angular - 绑定(bind)到 ngModel 的管道(纯或不纯)中的强制变化检测

Angular 6 错误 : CSSSyntaxError - Failed to compile

Angular Router Navigation 不会删除以前的组件 css

node.js - 如何完全卸载 npm 安装的所有内容(即如何确保安装了 npm 的全新安装)?

html - 自定义选择输入 Angular 4

angular - 使用 firebase 在应用程序中路由无法正常工作

angularjs - 使用 Controller 解决 $routeProvider 中的登录问题

javascript - Angular ui 加载状态前路由检查条件