Подтвердить что ты не робот

Как получить Angular2 для связывания компонента в innerHTML

Я хочу создать компонент myApp, который будет внедрять HTML из свойства на контроллере в его шаблоне. Однако некоторые из этих HTML могут включать в себя другие селектора компонентов.

import {InfoComponent} from ...
@Component({
    selector: 'myApp',
    template: `<div [innerHTML]='hData'></div>
               <myInfo></myInfo>`,
    directives: [InfoComponent]
})
export class AppComponent {
   hData = "<myInfo></myInfo>";
}

@Component({
   selector: 'myInfo',
   template: "<b>This is a test</b>"
})
export class InfoComponent {
}

В этом примере я ожидаю увидеть дважды This is a test. Тем не менее, не кажется, что движок Angular2 подбирает тот факт, что селектор компонента был введен, поэтому шаблон никогда не генерируется для селектора <myInfo></myInfo>, который добавляется через привязку.

Здесь вы можете увидеть демонстрацию .

Есть ли способ получить Angular2 для синтаксического разбора селектора так же, как с селектором, который явно добавлен в шаблон?

4b9b3361

Ответ 1

Невозможно создать [innerHtml]="..." экземпляр Angular компонентов или директив или установить какие-либо привязки.

Ближайшим для этого требования является DynamicComponentLoader. (DynamicComponentLoader был удален некоторое время назад) ViewContainerRef.createComponent()

См. Angular 2 динамических вкладки с выбранными вами компонентами с щелчком мыши для примера

Так как RC.5 Angular2 санирует стили и HTML, добавленные посредством привязки. См. В RC.1 некоторые стили не могут быть добавлены с использованием синтаксиса привязки для более подробной информации.