介绍
Angular 的Meta 服务允许您meta
根据应用程序中当前的活动路由获取或设置不同的标签。
注意: Angular Meta 服务可用于 Angular 4 及更高版本。
让我们回顾一下它的使用和可用的方法。
先决条件
如果你想跟随这篇文章,你需要:
- 对HTML
meta
元素有一定的了解。 - 对Angular 服务有一定的了解。
本教程已通过 Node v16.2.0、npm
v7.15.1 和angular
v12.0.3 验证。
使用addTag
和addTags
使用 Meta 服务需要从@angular/platform-browser
组件或服务中导入和注入它。
import { Meta } from '@angular/platform-browser';
对于多个meta
标签,您可以使用该addTags
方法在同一个调用中将它们全部设置。
这是我们在meta
加载组件时为 Twitter 卡片添加标签的示例:
constructor(private meta: Meta) {
this.meta.addTags([
{ name: 'twitter:card', content: 'summary_large_image' },
{ name: 'twitter:site', content: '@alligatorio' },
// ...
]);
}
此代码将在页面中产生以下结果:
Output<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@alligatorio">
请注意,addTag
和addTags
都可以使用第二个布尔参数来指示是否应该创建标签,即使它已经存在。
例如,这里的标签将被添加两次:
constructor(private meta: Meta) {
this.meta.addTags([
{ name: 'twitter:site', content: '@alligatorio' },
{ name: 'twitter:site', content: '@alligatorio' }
], true);
}
}
此代码将在页面中产生以下结果:
Output<meta name="twitter:site" content="@alligatorio">
<meta name="twitter:site" content="@alligatorio">
addTag
并addTags
允许您添加新meta
标签。
使用getTag
和getTags
与addTag
andaddTags
方法类似,还有getTag
andgetTags
方法。
考虑具有以下meta
标记的应用程序:
<meta name="viewport" content="width=device-width, initial-scale=1">
以下是如何getTag
使用的示例:
constructor(private meta: Meta) {
const viewport = this.meta.getTag('name=viewport');
if (viewport) console.log(viewport.content);
}
内容将输出到控制台。
Outputwidth=device-width, initial-scale=1
getTag
接受一个属性选择器字符串并返回一个HTMLMetaElement
. getTags
也接受一个属性选择器,但返回一个可能有多个HTMLMetaElements
匹配选择器的数组。
使用 updateTag
给定一个新的meta
标签定义和一个选择器,该updateTag
方法将更新与选择器匹配的任何标签。
在下面有点人为的例子中,我们首先设置一个meta
带有content
of的标签,summary_large_image
然后将其更新为 just summary
:
constructor(private meta: Meta) {
this.meta.addTag(
{ name: 'twitter:card', content: 'summary_large_image' }
);
this.meta.updateTag(
{ name: 'twitter:card', content: 'summary' },
`name='twitter:card'`
);
}
在真实的应用程序中,您可能希望更新meta
应用程序中全局存在的标签,但这应该根据活动路由采用不同的值。
使用removeTag
和removeTagElement
该removeTag
方法采用属性选择器的字符串并删除标记。
考虑具有以下meta
标记的应用程序:
<meta charset="utf-8">
并不是说您想这样做,但您可以通过以下方式删除charset
meta
标签:
constructor(private meta: Meta) {
this.meta.removeTag('charset');
}
的removeTagElement
是相似的,而是需要一个HTMLTagElement
而不是直接的字符串选择的。
这是相同的示例,但在这里我们首先获取charset
meta
标签元素:
constructor(private meta: Meta) {
const charsetTag = this.meta.getTag('charset');
if (charsetTag) this.meta.removeTagElement(charsetTag);
}
这两种方法都将删除meta
元素。
结论
在本文中,您学习了如何使用 Angular 的 Meta 服务来获取、添加、更新和删除meta
标签。
继续与我们的指导你的学习更新页面标题声明使用ngrx
。