Подтвердить что ты не робот

Как получить абсолютный путь к текущей странице в Angular 2?

Я по существу столкнулся с проблемой this, где мне нужна ссылка на текущий маршрут для использования градиентов, но пока не поняли, как перевести решение в Angular 2.

4b9b3361

Ответ 1

constructor(location:Location) {
  console.log(location.prepareExternalUrl(location.path()));
}

https://angular.io/api/common/Location#prepareexternalurl

Как сказано в документации:

Нормализует внешний URL-путь. Если данный URL не начинается с косая черта ('/'), добавляет одну перед нормализацией. Добавляет хеш, если HashLocationStrategy используется или APP_BASE_HREF, если PathLocationStrategy используется.

Это означает, что вы должны явно указать APP_BASE_HREF, чтобы получить абсолютный путь в Angular 5+.

window.location предоставляет больше информации

Пример плунжера

Ответ 2

Вы можете использовать инъекцию DOCUMENT из @angular/common.

import { Component, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';

@Component({...})
class SomeComponent {
  constructor(@Inject(DOCUMENT) document: any) {
    console.log(document.location.href);
  }
}

Ответ 3

Объект местоположения

Объект document.location - это одноразовое решение.

Используйте атрибуты внутри объекта местоположения из документа, чтобы получить путь так, как вам нужно. Давайте посмотрим на это с примером.

Итак, для https://www.google.com/images

  • document.location.href вернет https://www.google.com/images
  • document.location.origin вернет https://www.google.com
  • document.location.protocol вернет https:
  • document.location.host вернет google.com
  • document.location.hostname вернет google
  • document.location.pathname вернет /images

Ответ 4

Если вы перезагрузите страницу, вы не сможете получить маршрут маршрута по Router или ActivatedRoute. Вы должны использовать window.location.pathname