首页 > 解决方案 > 在导航之前,您可以获取初始导航的 url(和参数)吗?

问题描述

基本上,当 url 的条件为真时,我想导航到一个特殊的站点。

想象以下ngOnInit()内容app.component.ts

if (urlMatchesCondition()) {
    await this.router.navigateByUrl('special-site');
} else {
    await this.router.initialNavigation();
}

记录ActivatedRoute( await this.route.url.pipe(take(1)).toPromise()) 和Router( this.router.url) 分别记录一个空路由或“/”。

可以说,我想检查路线是否包含“测试”,我该怎么做?

标签: angulartypescript

解决方案


例如,ActivatedRoute您可以访问所有参数queryParamMap,或者路径..取决于您要检查的内容。

顺便说一句,如果您只关心当前值,则可以使用.snapshot来获取值而不是Observable.


此外,我认为您的用例更适合 Angular 中所谓的“守卫”,它允许在实际加载组件之前进行一些检查,并可选择重定向到其他地方。


推荐阅读