在 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) ActivatedRoute
或 ActivatedRouteSnapshot
并获取它们的 data
属性来获取它
最佳答案
你不能。它违背了 Angular Router 的设计。
人们使用状态管理库(例如 NGRX/NGXS/Akita 或自行设计的服务)来处理这种模式。
如果您的对象是持久的,我建议创建一些散列映射,并在 URL 中对 key 进行编码。这样当您从书签等导航时,可以恢复准确的状态。
关于Angular:通过链接参数数组传递路由数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51987371/