Sé libre de divulgar nuestra página y códigos con tus amigos, apóyanos para hacer crecer esta comunidad.
Solución:
El lado del servidor universal no es consciente de la ventana.ubicación.
El servidor express, por otro lado, conoce la URL de la solicitud que se envió al lado del servidor.
Por lo tanto, debemos inyectar la URL de solicitud de Express en angular.
servidor.ts
let template = readFileSync(join(__dirname, '..', 'dist', 'index.html')).toString();
app.engine('html', (_, options, callback) =>
renderModuleFactory(AppServerModuleNgFactory,
document: template,
url: options.req.url,
extraProviders: [
provide: 'requestUrl', useFactory: () => options.req.url, deps: [] , // 1. set up the provider for the url
provideModuleMap(LAZY_MODULE_MAP)
]
).then(html =>
callback(null, html);
);
);
..para recuperarlo donde lo necesitemos..
url-registrador.ts
class UrlLogger
constructor(
private window: Location,
private injector: Injector, // 2. we need the injector to ..
@Inject(PLATFORM_ID) private platformId: string,
)
public log()
if (isPlatformServer(this.platformId))
const requestUrl = this.injector.get('requestUrl'); // 3. ..retrieve the injected url
console.log('server greets you via ' + requestUrl)
else
console.log('browser says hello from ' + window.location.href)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)