【发布时间】:2019-10-21 06:29:46
【问题描述】:
我想这个问题已经被问过太多次了,因为我已经回答了几乎所有可能涉及到这个问题的问题。
简化我的需求:我想为我的网站创建社交分享按钮,该按钮使用 Angular 7 并具有通用的正确设置。
详细信息:我正在寻找一种解决方案,允许我动态更新 Facebook、Twitter 和其他社交媒体平台的元标记,这样当我点击分享按钮时,我应该分享内容这是特定于当前文章的观点。 重要提示:这些元标记的数据是通过API调用获得的,因此解决方案不能包含硬编码数据。
尝试过的解决方案:我尝试了使用“@angular/platform-browser”中的 Meta 的解决方案,但结果是它在 DOM 已经渲染后更新了标签。
我的组件的 ngOnInit 有以下内容:
this.musicService.getTrackInfo(track._id)
.subscribe(track => {
this.metaService.setTag('og:title', track.name);
this.metaService.setTag('og:type', 'music.song'); });
研究:
类似的未解决问题:
有人可以为这个问题提供完整的分步解决方案,并解释为什么当前使用 Meta 的方式不起作用。
【问题讨论】:
-
这里提供的解决方案与大多数解决方案一样。如果您检查,标签会更新,但如果您查看源代码,它们不会更新,因此爬网程序看不到标签
-
听起来您的通用设置有问题,因为您可以使用 SSR 更改元数据。尝试一个新项目。
-
我将尝试一个新项目。但是当 DOM 渲染正常时,我的 SSR 怎么会出现问题呢?
-
可能你的异步请求没有在服务器端正确完成。您说您在更新之前发出 API 请求。我认为这就是问题所在。
标签: angular client-side meta-tags angular-universal server-side-rendering