Мне нужно добавить & удалить угловые 2 компоненты на лету. Для этого я использую loadIntoLocation и распоряжаться методами, как это:Угловой 2 - Добавление/удаление компонентов на лету
Добавление компонента (от менеджера компоновки):
this.m_loader.loadIntoLocation(MyComponent, this.m_element, 'content').then(_componentRef => {
// Create the window and set its title:
var component: MyComponent = (_componentRef.instance);
component.ref = _componentRef;
// init the component content
});
Удаление компонента (от компонента):
this.ref.dispose();
это почти работает: - если добавить компонент, и закрыть его, он работает - если добавить несколько компонентов, они работают - но если добавить компонент а, затем удалить его, а затем добавить компонент в, это похоже на Угловое дает мне ссылку на A и сохраняет некоторые старые значения (мои компоненты перетаскиваются, и в этом случае B будет создан A был, когда я его уничтожил)
Есть ли способ сделать угловые уничтожить компоненты правильно или по крайней мере, заставить его создавать свежие?
Можете ли вы воспроизвести поведение в plnkr? У меня есть [этот рабочий] (http://plnkr.co/edit/z9xu3x2jVAEaoJq6TbRB?p=preview), но я не могу (и не знаю, действительно), как воспроизвести вашу проблему. –
Да, я разветвлен ваш плукер: http://plnkr.co/edit/lvQfnLfTImcRqRcxJaXU?p=preview. Нажмите «Добавить новый компонент», перетащите его где-нибудь, нажмите «Удалить», затем снова нажмите «Добавить новый компонент»: компонент создается только что удаленным местом. –
Проблема заключается в том, что angular2 по умолчанию повторно использует созданные элементы DOM (взял его из [этого комментария] (https://github.com/angular/angular/issues/4795#issuecomment-151688714)). Поэтому, если в вашем бутстрапе вы установите 'обеспечить (APP_VIEW_POOL_CAPACITY, {useValue: 0}', он будет работать красиво. Вот [plnkr updated] (http://plnkr.co/edit/bqo9K5bru4CN1jZ4r9mt?p=preview). –