Я поставил к себе
https://universal.angular.io/
при помощи CLI
https://www.npmjs.com/package/universal-cli
Все работает. Отлично. Реализовал пример Тур Героев из мануала
https://angular.io/docs/ts/latest/tutorial/toh-pt1.html
Тоже работает.
Далее установил
https://material.angular.io/
И слегка подправил Тур Героев, внедрив туда <button> и <md-input-container>
https://material.angular.io/components/component/input
Понятное дело, клиентская часть заработала. А вот рендеринг на сервере не работает. Например нет доступа к методу hasAttribute DOM-элемента. Потому что в Универсале нет эмуляции этого метода. И возможно вообще всех.
Было предложено решение подменить на сервере компонент <md-input-container> на свою заглушку, которая избавлена от обращения к функционалу браузера.
Но это решение неудобно тем, что придется много писать заглушек.
Я нашел решение, включив schemas: [ CUSTOM_ELEMENTS_SCHEMA ] в @NgModule. Рендеринг при этом происходит. Не рендерятся лишь проблемные компоненты. Уже лучше. Хоть что-то рендерится, хоть что-то будет проиндексировано. И клиентский рендеринг при этом не ломается.
Есть ли нормальное решение этой проблемы? Чтобы рендеринг был полным?