如何在Angular 7中获取完整的当前URL而不使用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中呈现问题。
我尝试遵循这个解决方案,它似乎与我遇到的问题相同,并进行了更新
以下是我的代码
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
];
在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)。您可能需要一个适当的加载器来处理此文件类型。| export const WINDOW = new InjectionToken('window'); |
const windowProvider: FactoryProvider = { | provide: WINDOW, | useFactory: () => window ℹ 「wdm」: Failed to compile.
请问有人可以告诉我如何解决这个问题。谢谢。
我还查阅了以下链接: