Как я могу получить полный текущий URL в angular 7 без использования window.location.href
?
Например, допустим, мой текущий URL-адрес http://localhost:8080/p/drinks?q=cold&price=200
Как получить полный URL, а не только /p/drinks?q=cold&price=200
?
Я пробовал с this.router.url
это дает только /p/drinks?q=cold&price=200
не с полным именем хоста.
Причина, по которой я не хочу использовать window.location.href
, заключается в том, что это вызывает проблему с рендерингом в ng-toolkit / universal
Я пытался следовать этому решению, которое, кажется, та же проблема, что и я, и также обновил
Как получить доменное имя для сервиса в Angular2
А вот и мой код
windowProvider.js
import { InjectionToken, FactoryProvider } from '@angular/core';
export const WINDOW = new InjectionToken<Window>('window');
const windowProvider: FactoryProvider = {
provide: WINDOW,
useFactory: () => window
};
export const WINDOW_PROVIDERS = [
windowProvider
];
In app.module.ts
@NgModule({
.......
providers:[
.......
windowProvider
]
})
И на моей обязательной странице:
import {WINDOW as WindowFactory} from '../../factory/windowProvider';
......
constructor(private router: Router, private helper: Helpers,
@Inject(WindowFactory) private windowFactory: any,
) {
console.warn('HELLO I M WINDOW FACTORY', this.windowFactory.location.hostname);
}
Купить это дает ошибку во время компиляции
ОШИБКА в ./src/app/factory/windowProvider.js 5:20 Ошибка анализа модуля:
Неожиданный токен (5:20) Вам может понадобиться соответствующий загрузчик для обработки
этот тип файла. | экспорт const WINDOW = новый
InjectionToken ( 'окно'); |
const windowProvider: FactoryProvider = {| предоставить: ОКНО, | useFactory: () => window 「「 wdm 」: Не удалось скомпилировать.
Может кто-нибудь сказать, пожалуйста, как я могу решить эту проблему. Спасибо,
Дополнительные ссылки, по которым я следовал: