如何使用 Angular 的元服务来获取、添加、更新和删除信息

介绍

Angular 的Meta 服务允许您meta根据应用程序中当前的活动路由获取或设置不同的标签。

注意: Angular Meta 服务可用于 Angular 4 及更高版本。

让我们回顾一下它的使用和可用的方法。

先决条件

如果你想跟随这篇文章,你需要:

本教程已通过 Node v16.2.0、npmv7.15.1 和angularv12.0.3 验证。

使用addTagaddTags

使用 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">

请注意,addTagaddTags都可以使用第二个布尔参数来指示是否应该创建标签,即使它已经存在。

例如,这里的标签将被添加两次:

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">

addTagaddTags允许您添加新meta标签。

使用getTaggetTags

addTagandaddTags方法类似,还有getTagandgetTags方法。

考虑具有以下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);
}

内容将输出到控制台。

Output
width=device-width, initial-scale=1

getTag接受一个属性选择器字符串并返回一个HTMLMetaElement. getTags也接受一个属性选择器,但返回一个可能有多个HTMLMetaElements匹配选择器的数组

使用 updateTag

给定一个新的meta标签定义和一个选择器,该updateTag方法将更新与选择器匹配的任何标签。

在下面有点人为的例子中,我们首先设置一个meta带有contentof标签,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应用程序中全局存在的标签,但这应该根据活动路由采用不同的值。

使用removeTagremoveTagElement

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁