Búsqueda de sitios web

javascript - angular universal actualizar etiquetas meta con contenido dinámico


Hola, estoy teniendo un problema. Tengo esta página de blogs que trae datos dinámicos, y con esos datos quiero utilizarlos para llenar las meta etiquetas, así que, por ejemplo, estoy haciendo algo como esto

getBlogPost() {
  this.http.get(...)
     .subscribe(result => {
         this.blogPost = result;
         this.meta.updateTag({ name: 'description', content: this.blogPost.fields.metaDescription });
         this.meta.updateTag({name: 'robots', content: 'INDEX, FOLLOW'});
         this.title.setTitle(this.blogPost.fields.blogName);
         this.meta.updateTag({name: 'twitter:image:src', content: this.blogPost.includes.Asset[0].fields.file.url });
         this.meta.updateTag({name: 'twitter:title', content: this.blogPost.fields.blogName });
         this.meta.updateTag({name: 'twitter:description', content: this.blogPost.fields.metaDescription });
         this.meta.updateTag({property: 'og:title', content:  this.blogPost.fields.blogName});
         this.meta.updateTag({property: 'og:description',  content: this.blogPost.fields.metaDescription});
         this.meta.updateTag({property: 'og:image', content: this.blogPost.includes.Asset[0].fields.file.url });
         this.meta.updateTag({property: 'og:image:secure_url', content: this.blogPost.includes.Asset[0].fields.file.url});
     })
}

Ahora todos los signos indican que esto debería funcionar, pero no veo las metaetiquetas actualizadas cuando reviso el código fuente y no las veo cuando verifico con herramientas de SEO...

¿Hay una solución para esto?

¡Gracias de antemano!

Respuesta #1

Tengo un blog completamente implementado en Angular 7. Así es como pude usar etiquetas meta de Facebook de manera dinámica sin usar Angular Universal:

1) en mi backend (en mi caso es Spring Boot) creé un servicio para generar un archivo HTML según mi publicación de blog actual. Estoy agregando todas las etiquetas específicas de Facebook en el encabezado de este HTML según mi publicación de blog (como título, miniatura, etc.)

2) En mi HTML agrego un enlace de "Ir a la publicación del blog"

3) Cuando quiero compartir la publicación del blog, estoy compartiendo la URL HTML generada en Facebook. Y así, el título, la miniatura, etc., son según el contenido actual de mi publicación.