【发布时间】:2017-11-11 14:53:24
【问题描述】:
这里有人知道如何访问 Angular 通用的主机名和路径名信息吗?
在客户端应用程序中,您可以访问包含该信息的窗口对象。
我只需要服务器上的这些信息?
【问题讨论】:
这里有人知道如何访问 Angular 通用的主机名和路径名信息吗?
在客户端应用程序中,您可以访问包含该信息的窗口对象。
我只需要服务器上的这些信息?
【问题讨论】:
server.ts:
...
app.engine('html', (_, options, callback) => {
let engine = ngExpressEngine({
bootstrap: ServerAppModule,
providers: [ { provide: 'host', useFactory: () => options.req.get('host') } ]
});
engine(_, options, 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', (_, options, 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));
});
...
【讨论】:
Error: StaticInjectorError[{provide:"host", useFactory:useFactory}]: 'deps' required。我的通用版本是5.0.0-beta.6
{ provide: 'host', useFactory: () => options.req.get('host'), deps: [] }