На странице показана базовая разметка, утешительное сообщение и индикатор загрузки.ng-content в корне Угловой компонент 2
<html>
...
<body app>
...page layout and loading stuff...
</body>
</html>
И корневой компонент
@Component({
selector: 'body[app]',
template: `<ng-content></ng-content>`
})
App {}
plunker, демонстрирующая проблема here.
После инициализации SPA предполагается, что элемент bootstrap body
и скомпилировать компоненты при сохранении существующей базовой компоновки.
Однако корневой компонент просто игнорирует ng-content
.
Это приводит к двум вариантам. Первоначальный макет должен быть сброшен и показан только после начальной загрузки. Или он должен дублироваться как в шаблоне корневого компонента, так и в HTML-документе (вероятно, с шаблонами на стороне сервера). Ни один из них не выглядит достаточно хорошим.
body
содержит чувствительную разметку, которая не может быть просто завернута в дочерний компонент, чтобы преодолеть это ограничение. Я намерен использовать Angular Universal, чтобы обеспечить SPA со статическим предварительным просмотром, но не на этом этапе.
Похоже, что это известная проблема, но я не могу найти работоспособное решение.
Как это можно исправить?
@ GünterZöchbauer предполагаемого дубликата содержит устаревшие ответы, которые я не нахожу удовлетворение. Все изменилось, и я надеялся, что есть лучший ответ, не без причины. – estus
Что значит «не без причины». Я не знаю никаких изменений в отношении этого вопроса. –
@ GünterZöchbauer Несмотря на название (возможно, неточное), это не вопрос RTM, а не дубликат, вопрос не в том, почему это происходит, но как добиться желаемого поведения. Я не доволен решением [this] (http://stackoverflow.com/a/35444285/3731501) и хотел бы знать, есть ли более идиоматические подходы, которые могут включать хакерские атаки на основных поставщиков A2 и не требуют Universal. Вопрос Дюпа уже получил справедливый ответ. Этого нет. – estus