Angular: Как работать с мета тегами title, description и другими
Метатег HTML хранит метаданные о документе HTML. Метаданные не отображаются на странице, но могут обрабатываться поисковыми роботами. Мета-элементы обычно используются для указания описания страницы, ключевых слов, автора, последнего изменения и других метаданных. Метаданные могут использоваться браузерами (как отображать контент или перезагружать страницу), поисковыми системами или другими веб-сервисами. Мета-теги играют важную роль в SEO. В Angular 4 есть сервис с именем «Meta», который можно использовать для получения и добавления метатегов. Этот сервис может помочь вам установить соответствующие метатеги на основе активных маршрутов, что, в свою очередь, влияет на SEO вашего сайта. В этом посте рассказывается, как использовать этот сервис и получать / устанавливать метатеги HTML с помощью Angular 4 и выше.
Как установить метатеги HTML с помощью Angular 4
Сервис Meta довольно прост в использовании и имеет следующие методы и названия не требуют пояснений.
- addTag
- addTags
- getTag
- getTags
- updateTag
- removeTag
- removeTagElement
Нам нужно импортировать этот сервис из модуля @angular/platform-browser
и внедрить его в ваш компонент или сервис. Подобно:
import { Meta } from '@angular/platform-browser';
addTag
Название метода объясняет его назначение. Он используется для добавления метатегов:
import { Component } from '@angular/core'; import { Meta } from '@angular/platform-browser'; @Component({ selector: 'my-app', templateUrl: './home.html', }) export class HomeComponent { constructor(private meta: Meta) { this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' }); this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); this.meta.addTag({ name: 'keywords', content: 'Angular, Meta Service' }); } }
addTags
Метод addTag
добавляет мета теги , один за другим, но с помощью addTags
вы можете добавить сразу несколько мета тегов в одном наборе:
import { Component } from '@angular/core'; import { Meta } from '@angular/platform-browser'; @Component({ selector: 'my-app', templateUrl: './home.html', }) export class HomeComponent { constructor(private meta: Meta) { this.meta.addTags([ {name: 'description', content: 'How to use Angular 4 meta service'}, {name: 'author', content: 'talkingdotnet'}, {name: 'keywords', content: 'Angular, Meta Service'} ]); } }
Оба метода addTag
и addTags
также принимают второй параметр (forceCreation), который является булевым значением (true / false) которое указывает, следует ли создавать тег если он уже существует:
import { Component } from '@angular/core'; import { Meta } from '@angular/platform-browser'; @Component({ selector: 'my-app', templateUrl: './home.html', }) export class HomeComponent { constructor(private meta: Meta) { this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' }); this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' },true); this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); } }
и ниже сгенерированный HTML:
Здесь метатег description был добавлен дважды, поскольку для принудительного создания установлено значение true.
getTag
Метод getTag
возвращает значение мета - тега. Этот метод принимает строку селектора атрибута и возвращает HTMLMetaElement. Вот пример того, как getTag
можно использовать:
import { Component } from '@angular/core'; import { Meta } from '@angular/platform-browser'; @Component({ selector: 'my-app', templateUrl: './home.html', }) export class HomeComponent { constructor(private meta: Meta) { this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' }); this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); const author = this.meta.getTag('name=author'); console.log(author.content); //talkingdotnet } }
getTags
Аналогично getTag
, также принимает строку селектора атрибута и возвращает массив HTMLMetaElement:
import { Component } from '@angular/core'; import { Meta } from '@angular/platform-browser'; @Component({ selector: 'my-app', templateUrl: './home.html', }) export class HomeComponent { constructor(private meta: Meta) { this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' }); this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); this.meta.addTag({ name: 'author', content: 'Other Author' }, true); const author = this.meta.getTags('name=author'); console.log(author[0]); // console.log(author[1]); // } }
updateTag
Этот метод обновляет содержимое любого существующего тега:
this.meta.addTag({ name: 'description', content: 'How to use Angular 4 meta service' }); this.meta.updateTag({ name: 'description', content: 'Angular 4 meta service' });
removeTag
Метод removeTag
принимает селектор атрибута и удаляет тег. В реальном приложении вряд ли есть ситуации, когда вы захотите это сделать. Однако при необходимости вы можете использовать этот метод для удаления любого метатега:
this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); this.meta.removeTag('name="author"');
removeTagElement
Подобно методу removeTag
, метод removeTagElement
также удаляет метатег. Но он принимает HTMLTagElement напрямую вместо строкового селектора:
this.meta.addTag({ name: 'author', content: 'talkingdotnet' }); const author = this.meta.getTag('name=author'); this.meta.removeTagElement(author);
Здесь мы сначала получаем метатег author и передаем его removeTagElement
для его удаления.
Заключение
Сервис Meta в Angular позволяет добавлять, обновлять, получать и удалять метатеги. Это помогает в создании динамических метатегов на основе активных маршрутов приложения Angular для улучшения SEO.