如何检查URL是否指向Angular应用程序之外

时间:2019-05-29 14:30:07

标签: javascript angular angular-routing

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

如何检查网址是否是外部网址? 例如。指向相同的域,但文档不同

<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

1 个答案:

答案 0 :(得分:-1)

您可以使用window.origin来获取您所在页面的URL,即角度页面。

因此,您只需要比较网站的来源和href的来源。