Как проверить, указывает ли URL вне углового приложения - PullRequest
0 голосов
/ 29 мая 2019

Я хочу показать всплывающее окно, когда пользователь нажимает на ссылку , которая является внешней по отношению к угловому приложению .

Как проверить, является ли 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

1 Ответ

0 голосов
/ 29 мая 2019

Вы можете использовать window.origin, чтобы получить URL-адрес страницы, на которой вы находитесь, и вашу угловую страницу.

Так что вам просто нужно сравнить происхождение вашего сайта с происхождением href.

...