Angular2: вставка динамического компонента в качестве дочернего элемента контейнера в DOM

Есть ли способ динамически вставить компонент в видеребенок (не родственник) тега DOM в Angular 2?

Существует множество примеров того, как вставить динамический компонент в качестве родственного элемента данногоViewContainerRefТег, как (на RC3):

@Component({
  selector: '...',
  template: '<div #placeholder></div>'
})
export class SomeComponent {
  @ViewChild('placeholder', {read: ViewContainerRef}) placeholder;

  constructor(private componentResolver: ComponentResolver) {}

  ngAfterViewInit() {
    this.componentResolver.resolveComponent(MyDynamicComponent).then((factory) => {
        this.componentRef = this.placeholder.createComponent(factory);
    });
  }
}

Но это создает DOM, похожий на:

<div></div>
<my-dynamic-component></my-dynamic-component>

Ожидаемый результат:

<div>
    <my-dynamic-component></my-dynamic-component>
</div>

С использованиемSomeComponent«sViewContainerRef имеет тот же результат, он по-прежнему вставляет сгенерированный компонент как родственный, а не дочерний элемент. Я был бы в порядке с решением, где шаблон пуст и динамические компоненты вставлены в шаблон (в теге выбора компонента).

Структура DOM очень важна при использовании таких библиотек, как ng2-dragula, для перетаскивания из списка динамических компонентов ивоспользоваться обновлениями модели, Дополнительный элемент div находится в списке перетаскиваемых элементов, но за пределами модели, что нарушает логику перетаскивания.

Некоторые говорят, что это невозможно (c.f. этот комментарий), но это звучит как очень удивительное ограничение.

Ответы на вопрос(4)

Ваш ответ на вопрос