Угловой универсальный серверный рендеринг, метатеги
Я переместил свой сайт в Angular universal SSR, во время моего перемещения я столкнулся с некоторыми проблемами, которые, как я думал, ng-universal исправит.
Я хочу добавить метатеги, такие как описание, ключевые слова и т. Д. (Разные для каждой страницы).
С использованием titleService
так как angular предполагает, что все работает отлично, он изменил заголовок страниц. Однако, если я попадаю на домашнюю страницу и затем перехожу оттуда к другим страницам, заголовок не меняется, но когда я смотрю на источник, я вижу изменение в источнике, но нет на вкладке VIEW. Если я попадаю на страницу (или нажимаю "Обновить"), страница обновляется с правильным заголовком.
Я пытался добавить дополнительные метатеги заголовка, но ничего не работает:
this.meta.updateTag( {name: "description", content: 'test1234});
this.meta.addTag({name: 'description', content: 'Content description' });
ИЛИ ЖЕ
using vanilaJS
var doc = (<HTMLMetaElement>document.getElementById('description'));
doc.content = "test1234";
мета не меняется в разделе заголовка. Понятия не имею почему. любая помощь может помочь.. спасибо
0 ответов
Чтобы установить метатеги для Angular Universal-SSR (пробовал только на Angular 2), вы должны использовать Renderer. Чтобы задать, например, заголовок (или обновить его), вы можете сделать это следующим образом: Ссылка на решение
Чтобы установить метатеги, вам необходимо: 1. Импортировать средство визуализации и документ.
import { Renderer } from '@angular/core';
import { DOCUMENT } from '@angular/platform-browser';
2. Добавьте эти зависимости в конструктор:
@Inject(DOCUMENT) private document: any,
private renderer: Renderer
3. Добавьте мета-теги -example
//-- Create new meta element inside of head tag
let elem = renderer.createElement(document.head, "meta");
//-- Set meta attributes
renderer.setElementAttribute(elem, 'name', 'description');
renderer.setElementAttribute(elem, 'content', 'Some test decription');
Когда вы открываете "исходный код страницы", внутри тега head должно получиться так: