我正在尝试在我的 Angular 应用程序中获取我的激活路由,以便我可以在 onInit 生命周期挂钩中加载它,这样当用户返回到组件时,组件将加载他们上次离开时的 url 状态.
我已经导入了 activateRoute 并将其注入到构造函数中:
constructor(private route: ActivatedRoute) {}
然后,在 onOnit 中,只是为了看看我有什么,我尝试了这个:
console.log('路由信息:', this.route.queryParams);
我得到的是 a behavior subject
,所以我尝试添加:
console.log('route info: ', this.route.queryParams.toArray().subscribe());
现在返回一个subscriber
.
底线,我想要的是能够捕获当前的 url/查询字符串,并在 ngOnInit 中加载它。像这样的东西:
ngOnInit() {
this.loadData();
}
loadData() {
this.route.queryParams;
}
这看起来很接近吗?我怎样才能真正让组件使用激活路由来加载 url/查询字符串中的内容?
更新:在下面的建议之后,我认为它可能看起来像这样?
ngOnInit() {
this.loadData();
}
loadData() {
let currentRoute = this.route.params.subscribe(params => {
// logic goes here
console.log(params['firstName']);
return params;
});
this.router.navigate([currentRoute]);
}
更新 2:
如果我这样做:
ngOnInit() {
this.activatedRoute.params.subscribe((params: Params) => {
let myParams = params;
console.log(myParams);
});
}
我在控制台中得到了这个:
{pn_firstName.e: "1", pn_firstName.v: "John"}
这就是我的 url/查询字符串的样子:
http://localhost:4200/consulting;pn_firstName.e=1;pn_firstName.v=John
所以它似乎是从我在控制台中看到的获取查询字符串。
那么,最重要的是,这会在组件加载时加载 url/查询字符串的当前状态吗?
ngOnInit() {
let currentRoute = this.activatedRoute.params.subscribe((params: Params) => {
let myParams = params;
console.log(myParams);
return myParams;
});
this.router.navigate([currentRoute]);
}
显然,不是,因为这是我在加载组件时得到的 url:
http://localhost:4200/consulting;closed=false;_parent=null;_parents=null;_subscriptions=%5Bobject%20Object%5D;syncErrorValue=null;syncErrorThrown=false;syncErrorThrowable=false;isStopped=false;destination=%5Bobject%20Object%5D