Я хочу поменять позиции динамически размещенных компонентов внутри представления.
т.е. я динамически создавал компоненты с id = 1 и 2, как показано на рисунке.
теперь мне нужно обменивать позиции обоих компонентов, но как?
Одна вещь, которую я знаю (только теоретически), - это местоположение, которое может быть изменено посредством метода перемещения внутри ViewContainerRef class
через объект как viewContainerRef.move(componentRef.hostView, index)
.
Я попробовал, но позиции не менялись.
@ViewChild(ContainerRefDirective) location: ContainerRefDirective;
let componentFactory = this.factoryResolver.resolveComponentFactory(EntryComponent);
let componentRef = this.location.viewContainerRef.createComponent(componentFactory);
let entryComponent: EntryComponent = componentRef.instance;
// lets say counter is variable that increments its value on new component creation.
entryComponent.Id = ++counter;
// move method is being called right after a new component is created and placed.
//this piece of code is in the same method (that is creating the dynamic components)
this.location.viewContainerRef.move(componentRef.hostView, 1);
Я прочитал документацию ViewContainerRef на angular.io и прочитал почти такой же вопрос относительно этой проблемы, но не смог понять или решить эту проблему.