angular - 在导航之前,您可以获取初始导航的 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
) 分别记录一个空路由或“/”。
可以说,我想检查路线是否包含“测试”,我该怎么做?
解决方案
例如,ActivatedRoute
您可以访问所有参数queryParamMap
,或者路径..取决于您要检查的内容。
顺便说一句,如果您只关心当前值,则可以使用.snapshot
来获取值而不是Observable
.
此外,我认为您的用例更适合 Angular 中所谓的“守卫”,它允许在实际加载组件之前进行一些检查,并可选择重定向到其他地方。
推荐阅读
- c - pwn 只有 realpath(),没有 write()
- react-native - 挂载页面时如何仅调度一次?
- flutter - flutter_web_auth 导航问题。从网页进行身份验证后,重定向不会使用所需的访问令牌返回到应用程序
- flutter - Flutter:弹出导航时不调用构建
- authentication - Keycloak 自定义身份验证器实现
- android - Android 自动备份规则格式错误
- python - Django 模板 - 如何在其他块中使用相同的块名称?
- vue.js - prop 对象内的 Vue id 属性未更新
- java - 防止OutOfMemory异常发生的机制java
- javascript - 如何将功能“飞到标记”添加到现有按钮?[传单地图]