Prerender.io с Angular Universal - не отображает HTML внутри тегов компонентов - PullRequest
0 голосов
/ 19 сентября 2019

Я создал приложение Angular Universal, которое состоит из вложенных компонентов.Мне нужен Prerender.io для возврата серверного рендеринга HTML из моего приложения, но Prerender.io возвращает только теги компонентов верхнего уровня, а не HTML внутри.

Похоже, это происходит с каждым приложением Angular (SRR или нет).Я ожидаю, что это произойдет на странице без SSR, но не на SSR.

Я следовал рекомендациям prerender.io :

git clone https://github.com/prerender/prerender.git
cd prerender
npm install
node server.js

И затем попыталсяперейти к:

http://localhost:3000/http://localhost:4000/test

Возвращенный html, который я получаю:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Documents SSR</title>
    <base href="/">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
    <link rel="stylesheet" href="styles.3ff695c00d717f2d2a11.css">
    <style></style>
</head>

<body>
    <app-root _nghost-sc0="" ng-version="8.2.3" _nghost-serverapp-c0="">
        <router-outlet _ngcontent-serverapp-c0=""></router-outlet>
        <component1>
            <!---->
            <component2></component2>
        </component1>
    </app-root>

</body>

</html>

Я бы ожидал, что Prerender.io отобразит все в component2, но, как вы видите, я ничего не получаю.

Я где-то пропустил конфигурацию или Prerender.io не поддерживает Angular?

Если перейти непосредственно к http://localhost:4000/test, я получу полный рендеринг HTML.

РЕДАКТИРОВАТЬ

Может показаться, что Prerender.io не ждет, когда мой последний вызов ajax будет выполнен перед рендерингом?

1 Ответ

0 голосов
/ 20 сентября 2019

Найдена проблема - не используйте ShadowDom.Мой component2 использовал encapsulation: ViewEncapsulation.ShadowDom.Устранение этого позволяет Prerender дать мне весь HTML.

...