这是一个用UrlHandlingStrategy重定向特定URL的好策略,还是有更好的方法?

例如,Below类实现UrlHandlingStrategy,并且将重定向包含#(散列)的ngJs URL.

下面的方法行得通,但我感觉还有更好的方法,问题是class::shouldProcessUrl被多次调用.

export class HybridUrlHandlingStrategy implements UrlHandlingStrategy {
  constructor(private readonly location: Location) {}

  shouldProcessUrl(urlTree: UrlTree): boolean {
    const url: string = urlTree.toString();
    // handle #hash routing
    if (urlTree.fragment) {
      const fragment: string = urlTree.fragment.replace(/[#!]/g, '');
      this.location.go(fragment); // <------------------------------- redirect done here
      return false;
    }

    return /^\/(errors|angularIO).*$/.test(url);
  }

  extract(urlTree: UrlTree): UrlTree {
    return urlTree;
  }

  merge(urlTree: UrlTree, _rawUrl: UrlTree): UrlTree {
    return urlTree;
  }
}

推荐答案

如果你问这是不是正确的地方,那么答案是否定的,因为下面是文档中提到的.

ShresdProcessUrl()-告诉路由是否应该处理此URL.

abstract shouldProcessUrl(url: UrlTree): boolean

因此,在guard上执行导航逻辑比在UrlHandlingStrategy上执行导航逻辑更好

Reference Stack Overflow Answer

Angular相关问答推荐

tabindex on button on button in MatMenu in angular不工作

带有搜索功能的CDK-VIRTUAL-SCROLL-VIEPORT不显示该值

Component RegisterComponent模板出现Angular 错误

带区域设置用法的Angular 日期管道

如何将表单作为Angular 分量输入传递?

Angular 16 Auth Guard在具有0的服务时给出Null Injector错误;httpclient;被注入

使用 Electron 打包器打包 Electron Angular 应用程序时无法加载资源

对象中的值丢失 angular ngrx

如何在 Angular14 中创建带有验证的自定义输入组件?

如何禁用特定数据集图表js的默认标签

Angular [disabled]="MyBoolean" 没有工作

Angular 5 中服务的生命周期是什么

Angular 2 - 事件列表

ViewChild 和 ContentChild 的所有有效 Select 器是什么?

EmptyError: no elements in sequence

如何在Angular 4中为数字管道指定语言环境千位分隔符

Angular 5 中 value 和 ngValue 的区别

Mat-autocomplete - 如何访问选定的选项?

NG2-Charts 无法绑定到 datasets,因为它不是 canvas的已知属性

@HostBinding 与 Angular 中的变量类