Я знаю, что динамические компоненты можно присоединить к ViewContainerRef
, выполнив это:
// assume these vars were previously created, and they have the following types:
// dynamicallyCreatedComponent: ComponentRef
// viewContainerRef: ViewContainerRef
viewContainerRef.insert(dynamicallyCreatedComponent.hostView)
Дело в том, что это не работает, если dynamicallyCreatedComponent
присоединен к другому ViewContainerRef
(мне кажется, что ViewRef
s может быть присоединен только к одному ViewContainerRef
одновременно). Поэтому мы должны сделать что-то вроде:
const indexInOldViewContainer = oldViewContainerRef.indexOf(dynamicallyCreatedComponent.hostView)
oldViewContainerRef.detach(indexInOldViewContainer)
viewContainerRef.insert(dynamicallyCreatedComponent.hostView)
Моя проблема : мне нужно иметь возможность вставить компонент в (новый) viewContainerRef
, но я неУ меня нет немедленного доступа к oldViewContainerRef
, который мне нужно от него отсоединить. Было бы замечательно, если бы был какой-то способ получить его от ComponentRef
, делая что-то вроде
const oldViewContainerRef = dynamicallyCreatedComponent.hostView.enclosingViewContainerRef
Существует ли что-то подобное?