Mit ngExpressEngine:
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);
}
}
Ohne 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));
});
...
Das bin ich den Pfad zu geben scheint. Gibt es auch eine Möglichkeit, den Hostnamen EX stackoverflow.com universal zu bekommen ?? –
Hostname wird immer zu localhost aufgelöst, weil Sie auf dem Server arbeiten .. Sie sollten eine globals.ts oder etwas erstellen und den Hostnamen dort definieren – PierreDuc
Kann ich den Hostnamen dynamisch bekommen? Diese eine App wird auf mehreren Domains leben, wir müssen den Hostnamen kennen, um einen Restanruf mit diesen Daten zu machen. –