Вывод Angular 4 SSR не отображает некоторые асинхронные значения - PullRequest
0 голосов
/ 25 октября 2018

У меня проблема с 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правильные значения можно увидеть, если вы просматриваете страницу с помощью опции «проверить элемент» в браузере.

...