Saltar al contenido

Angular 7: ¿Cómo puedo obtener la URL completa de la página actual?

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *