代码之家  ›  专栏  ›  技术社区  ›  Liero

如何检查url是否指向角应用程序外部

  •  1
  • Liero  · 技术社区  · 6 年前

    我想显示一个弹出窗口,当用户点击 角度应用程序外部的链接 是的。

    如何检查URL是否是外部的? 例如,指向同一域,但不同的文档

    <a [href]="someUrl" appCheckExternalUrl>{{someUrl}}</a>
    
    @Directive({
      selector: '[appCheckExternalUrl]'
    })
    export class CheckExternalUrlDirective {
    
      constructor(private el: ElementRef<HTMLAnchorElement>) { }
    
      get url() { return this.el.nativeElement.href; }
    
      get isExternalUrl() {
        return ???;
      }
    }
    

    棘手的是,这取决于路由器设置。

    假设我的应用程序托管在 mydomain.com/myapp 并确定路线 /myroute 是的。然后:

    • mydomain.com/myapp/myroute -内部路线
    • mydomain.com/anotherapp -外部路线。

    但是如果路由器使用标签路由,那么

    • mydomain.com/myapp/myroute 是外部的。

    此外,此URL也是外部的,因为它不是由应用程序处理的:

    • mydomain.com/myapp/assets/logo.png
    2 回复  |  直到 6 年前
        1
  •  0
  •   Scieur Arnaud    6 年前

    您可以使用window.origin来获取您所在页面的url,从而获得您的角页面。

    因此,您只需将您站点的来源与href的来源进行比较。

    推荐文章