angular - 当我们以角度浏览 router.navigate() 时如何添加活动类
问题描述
如果我使用 router.navigate() 导航到其他路由,如何根据路由添加活动类
模板代码
<div class="row">
<div class="col-lg-7">
<div class="row" *ngFor="let item of res " (click)="selected(item)">
{{item.name}}
<div>
<div>
</div>
<div class="col-lg-5">
<router-outlet></router-outlet>
</div>
</div>
ts文件
import {Router , ActivatedRoute} from '@angular/router';
constructor(public router: Router, public route: ActivatedRoute,) { }
routingSelected(partnerCode) {
this.router.navigate([partnerCode] , { relativeTo: this.route });
}
解决方案
作为一种解决方法,您可以在 router-outlet 指令上放置模板变量以获取对 ActivateRoute 信息的引用。然后使用 ngClass 你可以动态添加 ngClass。
组件.html
<div class="row">
<div class="col-lg-7">
<div [ngClass]="{active:routerOutletVariable.isActivated && (routerOutletVariable.activatedRoute.url | async).
some(cb(item.partnerCode))}" class="row" *ngFor="let item of res " (click)="selected(item)">
{{item.name}}
<div>
<div>
</div>
<div class="col-lg-5">
<router-outlet #routerOutletVariable="outlet"></router-outlet>
</div>
</div>
组件.ts
cb = (partnerCode)=>{return (route)=>{
return route.path === partnerCode;
}}
推荐阅读
- git - Git - 解决 Word 文档中的合并冲突
- python - 日期时间不可迭代 - 创建列表时出错
- automation - 避免黄瓜重复步骤
- azure-storage - 将存储安全地连接到 Azure Data Lake Analytics 或数据工厂
- node.js - 如何在安装之前正确编译 nodejs 包?
- asp.net-mvc - 如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志
- amazon-ec2 - 将 VM 从 AWS 迁移到基于 Hyper-V 的本地数据中心
- node.js - 根据请求在快速应用程序中设置调度程序,如果需要,在设置时间之前清除它
- c# - 读取存储帐户的防火墙 IP 列表
- php - Codeigniter 重定向不起作用 Ubuntu 18.04 LTS 服务器