Angular Universal动态Meta标题未在页面源代码中显示
问题原因与解决办法
为什么页面源代码看不到更新?
Angular是单页应用,你看到的「页面源代码」是服务器最初返回的静态内容,而通过titleService和metaService动态修改的内容,是在浏览器端的DOM里实时更新的。要验证是否生效,得打开浏览器开发者工具的Elements面板,查看<head>标签下的<title>和meta标签。
代码里的问题与修正
- 没必要用
metaService更新name='title'的标签,标准HTML里的<title>标签已经由titleService.setTitle()负责处理,meta标签不存在name="title"这个标准属性。如果是要给社交平台设置标题,应该用property='og:title'。 - 若初始页面中没有对应的meta标签,
updateTag可能无法生效,建议先判断标签是否存在,不存在则用addTag。
修正后的代码示例:
this.httpService.getBlogsDetails(Id).subscribe((response: any) => { this.blogDetails = response?.data?.blog; this.htmlPart = this.sanitized.bypassSecurityTrustHtml(response?.data?.blog?.description); this.spinner.hide(); // 设置页面<title>标签 const metaTitle = response?.data?.blog?.meta_title; this.titleService.setTitle(metaTitle); // 设置robots meta标签 this.metaService.updateTag({ name: 'robots', content: "Index,Follow" }); // 设置页面描述meta标签 this.metaService.updateTag({ name: 'description', content: response?.data?.blog?.meta_description }); // 若需设置社交分享用的标题,添加og:title标签 this.metaService.updateTag({ property: 'og:title', content: metaTitle }); });
验证方式
- 打开浏览器开发者工具(F12),切换到Elements面板
- 找到
<head>标签,查看其中的<title>和对应meta标签,确认内容是否已更新
内容的提问来源于stack exchange,提问作者Aniket
相关产品推荐
相关产品推荐

