angular - Angular:基于活动路由器链接绑定模板变量的干净方法
问题描述
构建一个 Angular 4 应用程序,但我会接受一个也适用于 v5+ 的答案。我有一个由导航按钮组成的导航栏,如下所示:
<custom-button routerLink="/some-route"></custom-button>
我知道我可以根据当前路由是否与按钮匹配,向元素添加一个自定义类“活动”routerLink
:
<custom-button routerLink="/some-route" routerLinkActive="active"></custom-button>
但是,我需要一种基于此条件(路由是否为当前)绑定输入值的方法,例如:
<custom-button routerLink="/some-route" [inputFlag]="isOnCurrentRoute">
</custom-button>
所以这个想法是如果按钮是指当前路线,inputFlag
则将设置为。我知道这可以通过注入和构建一个函数来完成,该函数采用按钮的值并在它与当前路由匹配时返回。true
routerLink
ActivatedRoute
routerLink
true
<custom-button routerLink="/some-route"
[inputFlag]="isOnCurrentRoute('/some-route')">
</custom-button>
不过,这是很多开销;想知道 Angular 是否公开了一个 API 来在模板中完成所有这些工作
解决方案
您可以像这样定义函数 isOnCurrentRoute
import { Router } from '@angular/router';
import { map, filter } from 'rxjs/operators';
constructor(private router: Router) {}
isOnCurrentRoute(path): Observable<boolean> {
return this.router.events.pipe(
filter(event => event instanceof NavigationEnd),
map(event => event.url === path)
);
}
并通过异步管道在您的模板上使用它
<custom-button routerLink="/some-route"
[inputFlag]="isOnCurrentRoute('/some-route') | async">
</custom-button>
希望这可以帮助
推荐阅读
- odoo - 重叠的 Odoo 时间表
- unity3d - HoloLens - Unity:光标未与多维数据集对齐
- antlr - 使用 ANTLR 4 解析 SQL 'between' 和 'and' 表达式
- apache-kafka-streams - Kafka Streams 的 StreamsConfig.COMMIT_INTERVAL_MS_CONFIG 的合理值是多少
- entity-framework - 如何修复 EntityFrameworkCore 中的数据迁移错误?
- laravel - 在 laravel 上使用 put() 上传损坏的图像
- angular - 无法在角度 7 中执行另一个组件的方法
- ms-word - 隐藏后台按钮
- html - 如何修复 MaterializeCSS 垂直对齐
- apache-spark - 将 Spark 作业从 Windows 机器提交到远程纱线集群(Unix)