Вставка HTML (с угловыми 2 директивами) с сервера в DOM
У меня есть ~2000 строк HTML-кода, которые я могу получить с моего Java-сервера. Этот HTML-код также содержит угловые директивы, такие как ngIf*
а также (click)
а также [ngClass]
, Когда я пытаюсь отобразить этот HTML в моем клиенте с помощью следующих методов:
<div [innerHTML]="htmlData"></div>
<div innerHTML="{{ htmlData }}"></div>
Я вижу, что все элементы HTML отображаются правильно, но ни одна из угловых директив не работает (например, некоторые из HTML должны быть скрыты с помощью *ngIf
но они не... и никто из (click)
события работают. Что я могу сделать, чтобы это исправить?
Мне нужна эта функциональность, потому что я доставляю свой код в виде JAR-файла различным пользователям для запуска на их локальных компьютерах, и я хочу предоставить HTML-код с некоторых Amazon S3, чтобы я мог обновлять его всякий раз, когда я хочу, чтобы их веб-сайт обновлялся,
И я попытался посмотреть на ответы ниже, но они имели дело с чистым HTML с сервера и не имели каких-либо угловых указаний.
Вставка HTML с сервера в DOM с помощью angular2 (общие манипуляции с DOM в Angular2)
1 ответ
К сожалению, это невозможно. InnterHTML
поместит код HTML там - не угловой. Угловой код должен быть скомпилирован заранее - процесс, в котором все директивы и html magic заменены простыми JS.
Вы можете преобразовать свой угловой код в обычный html путем рендеринга на стороне сервера с помощью узла js.
Вы можете узнать больше о рендеринге на стороне сервера здесь: https://angular.io/guide/universal
Но точно так же вы можете использовать JAVA и любой популярный шаблонизатор для JAVA-серверов, если вы отправите свои параметры в запросе http.