导入元服务
在使用元服务之前,我们需要从平台浏览器包中导入它。
import { Meta } from '@angular/platform-browser';
接下来,我们将通过构造函数将其注入到我们的组件中。constructor(private meta: Meta) {}
添加元标签
为了添加新的元标记,Angular Meta 服务提供了两个方法 addTag 和
addTags.
this.meta.addTag({ name: 'description', content: 'This is an article about Angular Meta service' });
The addTag method accepts a meta definition object as a parameter that is used to describe the meta tag.
上面的代码将产生以下 HTML 元标记元素。
您还可以使用 addTags 同时添加多个元标记。
this.meta.addTags([
{ name: 'description', content: 'This is an article about Angular Meta service' },
{ name: 'keywords', content: 'angular, javascript, typescript, meta, seo' }
]);
上面的代码将产生以下 HTML 元标记元素:
要记住的一件事是 addTag 和 addTags 方法都接受第二个参数 forceCreation,它强制方法创建一个新的元标记元素而不检查它是否已经存在。
检索元标记
要从 DOM 中读取元标记,我们可以使用 Meta 服务提供的 getTag 或 getTags 方法。getTag 和 getTags 方法接受一个表示属性选择器的字符串,并根据该选择器返回匹配的元素
string:
const keywords = this.meta.getTag('name=keywords');
console.log(keywords.content);
// Output: angular, javascript, typescript, meta, seo
The getTag method returns an HTMLMetaElement while getTags returns array of HTMLMetaElements.
要记住的一件事是 getTag 返回选择器参数中描述的匹配元标记的第一个实例,而 getTags 方法返回与选择器匹配的元标记的所有实例。
let tags = this.meta.getTags('name');
在上面的代码中,getTags 将返回所有包含 name 属性的元标记实例,并将这些实例以数组的形式保存在 tags 变量中。
更新元标签
要更新现有的元标记,我们可以使用与 Angular Meta 服务捆绑在一起的 updateTag 方法。
this.meta.addTag({ name: 'keywords', content: 'angular, javascript, typescript, meta, seo' });
setTimeout(() => {
this.meta.updateTag(
{ name: 'keywords', content: 'angular, javascript, typescript, meta' },
'name=keywords'
)
}, 4000)
在上面的代码片段中,我们首先添加了一个带有名称关键字的新元标记。接下来,我们使用 updateTag 方法在 4 秒后更新标签。要记住的一件事是,如果 DOM 中不存在带有 name 关键字的标签,updateTag 方法将创建一个新元素。