【发布时间】:2020-09-21 02:18:34
【问题描述】:
我有一个路由,只有当用户单击电子邮件中的链接并使用 url 中的有效查询参数重定向时,他们才能访问该路由。如果没有提供参数,我想重定向到 404 页面未找到组件,如下所示。
this.route.queryParams.subscribe(params => {
if (params.myParam) {
//do something
} else {
// redirect to 404
}
})
我遇到的问题是查询参数在 ngOnInit() 中被初始化为一个空对象。我已经使用 rjxs 来等待参数可以像这样访问
this.route.queryParamMap.pipe(
filter(paramMap => paramMap.has('myParam')),
map(paramMap => paramMap.get('myParam')),
take(1)
).subscribe(myParam => doSomething(myParam));
但是我对 rxjs 操作符不是很精通,现在我被困在 paramMap 已经完成初始化并且找不到参数的情况下如何实际重定向。
【问题讨论】:
-
“查询参数在 ngOnInit() 中被初始化为空对象”是什么意思?
ngOnInit在同一个组件中? -
如果我像这样订阅 ngOnInit 中的 queryParams,
this.route.queryParams.subscribe(console.log),它第一次发出时,我看到了{}。 -
解决 this.route.snapshot.queryParms 并告诉我你看到了什么
-
@Flightdoc5242
{},使用路线localhost:4200/?myParam=464f4e2a-a0fa-4cd8-baf2-a8945cfb2aaf