我是第一次尝试获取路由参数,而我似乎无法弄清楚如何正确使用ActivatedRoute
。
根据API和文档,我试图在页面加载时获取路径参数。
ngOnInit() {
const orgSlug: Observable<string> = this.route.params.map(params => {console.log(params); return params.org});
}
在页面加载时,不记录任何内容。我的假设是页面加载,我会得到params对象的初始状态。我在ngOnInit
和构造函数中都尝试了它,但两者都没有结果。我知道我可以检查快照,但是我必须为初始状态和任何更改状态重复代码,这感觉不对。
我是否误解了观察者或ActivatedRoute的工作原理?
答案 0 :(得分:1)
你应该在params之后使用subscribe()。
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params.subscribe(params => {
this.id = params['id']; // do this if it is a number +params['id']
});
}
此外,您可能想要取消订阅(可选)
private sub:any;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
this.id = params['id']; // do this if it is a number +params['id']
});
}
当您的组件即将销毁
时取消订阅ngOnDestroy() {
this.sub.unsubscribe();
}
虽然angular会为你做垃圾收集,但为了安全起见,最好还是手动取消订阅。
答案 1 :(得分:0)
你应该在构造函数中使用,你应该订阅params,它将在页面呈现之前执行并且你的params可用,因为这些是异步调用将它放在onInit中是不可取的
constructor(private route:ActivatedRoute) {
this.route.params.subscribe(params => {
console.log(params);
}).map(params => {
console.log(params);
return params.org}
);
});