【发布时间】:2019-11-14 16:28:19
【问题描述】:
我很难正确处理子组件的路由参数。
我有一个这样的路由参数:
{ path: 'bin-view/:pileid', loadChildren: () => import(`./bin-view/bin-view.module`).then(m => m.BinViewModule) }
以及我传入参数的链接:
<a [routerLink]="['/bin-view', _pileid]" routerLinkActive="active">view bin</a>
然后在我的子组件上下文中,我有以下内容:
export class OverviewComponent implements OnInit {
private _pileid;
constructor(private _activatedRoute:ActivatedRoute) {
this._pileid = this._activatedRoute.snapshot.paramMap.get('pileid');
}
ngOnInit() {
console.log(this._pileid);
}
}
但这一直给我一个null 值。我在这里错过了什么?
【问题讨论】:
-
你看到URL中的参数了吗?此外,如果组件有可能被重用,则不应使用快照。可能是,组件首先在没有参数的情况下初始化,并将属性设置为 null,并且由于您使用的是快照,因此不会更新它。试试 this._activatedRoute.paramMap.subscribe() 代替。在这里阅读更多:angular.io/guide/router#activated-route-in-action
-
是的,当我单击
[router-link]href 时,我在 URL 中看到了 _pileid 值:/bin-view/517530/overview,因此它肯定会正确填充 URL。当我进入子组件上下文时无法阅读它。
标签: angular parameters routing