У меня проблема с HTML, сгенерированным SSR (рендеринг на стороне сервера с Node.js) с использованием Angular Universal.В большинстве случаев в моем приложении - SSR работает довольно хорошо, но два случая вообще не работают.
1.<title>
содержимое тега
У меня есть некоторое значение по умолчанию внутри тега title
, которое я изменяю в определенных маршрутах после получения некоторых данных из HTTP-запроса.Для этого я использую:
import { Title } from '@angular/platform-browser';
titleService.setTitle('NewTitle');
С точки зрения браузера / пользователя - все работает нормально.Но когда я попадаю в источник страницы в браузере или извлекаю источник страницы, используя curl - новое значение из HTTP-вызова не отображается , только по умолчанию.
2.Значение внутри <script type="application/ld+json">
Одним из требований в моем проекте является динамическое создание наборов данных (https://developers.google.com/search/docs/data-types/dataset) для подстраниц приложения. Я пытался использовать решение из этого урока: https://coryrylan.com/blog/angular-seo-with-schema-and-json-ld
, но JSON, сгенерированный асинхронно с использованием HTTP-вызова, равен undefined внутри <ngx-json-ld>
тегов.
Я также пытался сделать это самостоятельно без сторонних библиотек,использование innerHtml
:
<div [innerHtml]="jsonLDString"></div>
Где jsonLDString
очищается с помощью:
this.sanitizer.bypassSecurityTrustHtml(this.jsonLDString);
Вывод точно такой же, как и в первой проблеме: только значение по умолчанию отображается с SSRправильные значения можно увидеть, если вы просматриваете страницу с помощью опции «проверить элемент» в браузере.