angular - 如何仅在特定路线上显示元素?
问题描述
我有一个带有一些基本登录和注册路由的导航栏,但问题是,在主页('/')上,我有一个关于我们的部分,我不想在登录时显示('/ login') 或注册('/signup') 页面。那么我怎样才能仅在路线('/')上显示该部分?
解决方案
您可以将路由器与事件对象内部的events
已解析结合使用:urlAfterRedirects
export class NavComponent {
readonly showAbout$ = this.router.events.pipe(
filter((event) => event instanceOf NavigationEnd)
map((event) => this.canShowAbout(event.urlAfterRedirects)),
startWith(this.canShowAbout(this.router.url))
)
constructor(readonly router: Router) {}
canShowAbout(url: string): boolean {
return ['/login', '/signup'].every((path) => !url.startsWith(path)
}
}
并在您的组件中使用async
管道:
<nav>
<a routerLink="/home">Home</a>
<a *ngIf="showAbout$ | async" routerLink="/about">
About
</a>
</nav>
推荐阅读
- c++ - 在 C++ 中正确使用模运算符
- mysql - 在mysql上分区或不分区
- python - JupyterLab 启动时如何加载 notebook.json 或 custom.js?
- python-3.x - 如何从 SHAP 中的摘要图中获取特征重要性/特征排名而不会崩溃?
- python - 无法让代码检测轮到谁在 Python IDLE
- three.js - 如何在三个 js 中获取有关对象阴影的信息?
- python - 从 Linux 中的 PE 文件中获取“产品名称”
- c++ - OpenACC nvlink 未定义类的引用
- sparql - 如何在 Protege 中选择所有具有相同类型的个人?
- python - 如何在 jitclass 中创建一个 numpy 数组列表