有没有人知道如何在Angular universal中访问主机名和路径名信息?
在客户端应用程序中,您可以访问具有该信息的窗口对象.
我只需要服务器上的那些信息?
解决方法
随着
ngExpressEngine:
server.ts:
... app.engine('html',(_,options,callback) => { let engine = ngExpressEngine({ bootstrap: ServerAppModule,providers: [ { provide: 'host',useFactory: () => options.req.get('host') } ] }); engine(_,callback) }) ...
app.component.ts:
import { Inject,Injector,PLATFORM_ID } from '@angular/core'; import { DOCUMENT,isPlatformServer } from '@angular/common'; ... constructor(@Inject(DOCUMENT) private document,private injector: Injector,@Inject(PLATFORM_ID) private platformId: Object) { if (isPlatformServer(this.platformId)) { console.log(this.injector.get('host')) } else { console.log('document: ',document.location.hostname); } }
没有ngExpressEngine:
server.ts:
... app.engine('html',callback) => { const opts = { document: template,url: options.req.url,extraProviders: [{ provide: 'host',useFactory: () => options.req.get('host') }] }; renderModuleFactory(AppServerModuleNgFactory,opts) .then(html => callback(null,html)); }); ...