gpt4 book ai didi

angular - 为什么 queryParams 为空

转载 作者:太空狗 更新时间:2023-10-29 19:31:46 27 4
gpt4 key购买 nike

我目前正在尝试了解如何在 Angular 组件中收集 queryParameters。因为我只想在初始化期间收集它们一次,所以我首先尝试了快照模式:

ngOnInit() {
console.log(this.route.snapshot.queryParamMap);
console.log('param test = ' + this.route.snapshot.queryParamMap.get('test'));
}

查看 Stackblitz 上的演示:https://stackblitz.com/edit/angular-2tuafn可通过以下网址进行测试:https://angular-2tuafn.stackblitz.io?test=123

但结果是,queryParam "test"为 null,queryParamMap 为空,请参阅控制台输出:

ParamsAsMap {params: {…}}
keys: Array(0)
params: {}
__proto__: Object
param test = null

=> 为什么queryParamMap 是空的???

然后,我尝试使用 Observable 模式:

ngOnInit() {
this.route.queryParamMap.subscribe(
(params: ParamMap) => {
console.log(params);
console.log('param test = ' + params.get('test'));
}
);
}

查看 Stackblitz 上的演示:https://stackblitz.com/edit/angular-hfqx8a可通过以下网址进行测试:https://angular-hfqx8a.stackblitz.io?test=123

但结果是,queryParam "test"首先为 null,然后取正确的值 (123),请参阅控制台输出:

ParamsAsMap {params: {…}}
keys: Array(0)
params: {}
__proto__: Object
param test = null
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
ParamsAsMap {params: {…}}
keys: Array(1)
params: {test: "123"}
__proto__: Object
param test = 123

=> 为什么第一个控制台输出为空,然后控制台输出正确的 queryParam 值?

经过多次研究,我无法理解发生了什么:-(

=> 预先感谢您的帮助

问候

编辑:

感谢 Dimanoid 和 Pravin Pokharkar,我明白了我的问题。=> 因为组件是在应用实际路由之前加载的!!!

因此我更新了我的代码,现在我正确地收集了查询参数:

this.router.events.subscribe(
(event: RouterEvent) => {
if (event instanceof NavigationEnd) {
this.test = parseInt(
this.activatedRoute.snapshot.queryParamMap.get('test')
);
}
}
);

最佳答案

因为组件是在应用实际路由之前加载的。将 { enableTracing: true } 添加到 RouterModule 以查看幕后发生的情况。

RouterModule.forRoot([], { enableTracing: true })

https://stackblitz.com/edit/angular-boghpy?file=src/app/app.module.ts

关于angular - 为什么 queryParams 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com