Я по существу столкнулся с проблемой this, где мне нужна ссылка на текущий маршрут для использования градиентов, но пока не поняли, как перевести решение в Angular 2.
Как получить абсолютный путь к текущей странице в Angular 2?
Ответ 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