You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何判断当前路由是否以指定路径(如/vehicle/edit/*)开头

解决方案

方法1:直接使用字符串startsWith方法(最简单)

修改app.component.html中的*ngIf条件,利用原生字符串方法匹配所有以/vehicle/edit/开头的路径:

<router-outlet>
  <app-spinner></app-spinner>
  <ngx-ui-loader *ngIf="!(currentRoute === '/dashboard' || currentRoute.startsWith('/vehicle/edit/'))"></ngx-ui-loader>
</router-outlet>

无需额外修改TS代码,就能覆盖所有带ID参数的车辆编辑页面路径。

方法2:用正则表达式封装判断逻辑(更灵活)

将匹配逻辑移到TS文件中,通过正则实现精准匹配:

  1. 在app.component.ts中添加判断方法:
shouldHideLoader(): boolean {
  // 匹配仪表盘路径,或所有/vehicle/edit/开头的路径
  return this.currentRoute === '/dashboard' || /^\/vehicle\/edit\/.*$/.test(this.currentRoute);
}
  1. 修改app.component.html的*ngIf条件:
<router-outlet>
  <app-spinner></app-spinner>
  <ngx-ui-loader *ngIf="!shouldHideLoader()"></ngx-ui-loader>
</router-outlet>

正则表达式^\/vehicle\/edit\/.*$会严格匹配以/vehicle/edit/开头的任意路径,适合需要复杂匹配规则的场景。

方法3:利用Angular Router的路由匹配(更符合Angular规范)

如果路由配置中已定义车辆编辑页的路由(比如path: 'vehicle/edit/:id/:subId'),可以通过Router API判断当前路由:

  1. 在app.component.ts中注入Router并添加方法:
import { Router } from '@angular/router';

constructor(private router: Router) {}

shouldHideLoader(): boolean {
  // 精确匹配仪表盘
  const isDashboard = this.router.isActive('/dashboard', { exact: true });
  // 判断当前路由是否包含车辆编辑路径段
  const isVehicleEdit = this.router.url.includes('/vehicle/edit/');
  
  return isDashboard || isVehicleEdit;
}
  1. 修改app.component.html的*ngIf条件:
<ngx-ui-loader *ngIf="!shouldHideLoader()"></ngx-ui-loader>

这种方式贴合Angular路由体系,避免直接操作字符串路径。

内容的提问来源于stack exchange,提问作者Anchal Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:35:01