Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

403
Vistas
Angular 2/4/Universal - ¿Cómo usar datos JSON-LD?

Tengo una aplicación Angular 4 Universal y quiero empezar a utilizar microdatos en formato JSON-LD .

Utiliza una etiqueta de secuencia de script con algún contenido, por ejemplo:

 <script type="application/ld+json"> { "@context": "http://schema.org", ... } </script>

Dado que estos datos deben cambiar por vista, estoy buscando una manera de inyectar estos datos en el cambio de ruta en Angular 4. Actualmente, las etiquetas de script se eliminan de las plantillas . Cuando se utiliza una solución alternativa con docuemnt.createElement , esto no funciona en la aplicación Angular Universal del lado del servidor.

¿Cómo haría esto?

EDITAR

Uso Angular 4.xx, que ahora se conoce como Angular simple. Inyecto el document así:

 import { DOCUMENT } from '@angular/platform-browser'; class Test { constructor(@Inject(DOCUMENT) private _document) { } public createScriptTag() { this._document.createElement('script'); // doesn't work server-side } }
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

EDITAR: como se señaló en los comentarios, esta solución es una solución pirateada y debe usarse con precaución.

Puede inyectar algún otro tipo y función "ɵgetDOM" y "ɵDomAdapter" para obtener una referencia al dom. Perdón por llamarlo "algún" servicio y función, porque no tengo ni idea de por qué lo nombran así. Acabo de examinar el código fuente y cómo lo está haciendo el equipo angular con MetaService.

 import { Inject } from '@angular/core'; import { Meta, Title } from '@angular/platform-browser'; import { ɵgetDOM, ɵDomAdapter, DOCUMENT } from '@angular/platform-browser'; @Injectable() export class SeoService { private dom: ɵDomAdapter; constructor(@Inject(DOCUMENT) private document: any, private titleService: Title, private metaService: Meta) { this.dom = ɵgetDOM(); let scriptEl = this.dom.createElement('script'); // .. } }

He probado esto y lo uso en producción.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda