2017-06-09 1 views

Antwort

0

Sie können den Location Service den Weg bekommen:

constructor(location: Location) { 
    console.log(location.path()); 
} 
+0

Das bin ich den Pfad zu geben scheint. Gibt es auch eine Möglichkeit, den Hostnamen EX stackoverflow.com universal zu bekommen ?? –

+0

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

+0

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. –

1

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)); 
}); 
... 
Verwandte Themen