Tôi cần có thể thêm & loại bỏ các thành phần góc 2 trên bay. Để làm như vậy, tôi đang sử dụng và định đoạt loadIntoLocation phương pháp, giống như nó:Góc 2 - Thêm/loại bỏ các thành phần trên bay
Thêm một thành phần (từ một người quản lý bố trí):
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
});
Loại bỏ một phần (từ thành phần):
this.ref.dispose();
Nó gần như đang hoạt động: - nếu tôi thêm một thành phần và đóng nó, nó hoạt động - nếu tôi thêm một số thành phần, chúng hoạt động - nhưng nếu tôi thêm thành phần A, sau đó loại bỏ nó, sau đó thêm thành phần B, nó có vẻ như góc cung cấp cho tôi tham chiếu đến A và giữ một số giá trị cũ (thành phần của tôi có thể kéo được và trong trường hợp này, B sẽ được tạo A khi tôi đã hủy nó)
Có cách nào ít nhất là buộc nó tạo ra những cái mới?
Bạn có thể sao chép hành vi trong một plnkr không? Tôi có [cái này hoạt động] (http://plnkr.co/edit/z9xu3x2jVAEaoJq6TbRB?p=preview), nhưng tôi không thể (và tôi không biết thực sự) làm thế nào để tái tạo vấn đề của bạn –
Vâng, tôi đã chia hai người plunker của bạn: http://plnkr.co/edit/lvQfnLfTImcRqRcxJaXU?p=preview. Nhấp vào "Thêm thành phần mới", kéo nó vào một nơi nào đó, nhấp vào "Xóa", sau đó nhấp vào "Thêm thành phần mới" một lần nữa: thành phần được tạo ở vị trí vừa bị xóa. –
Vấn đề dường như là angular2 theo mặc định sử dụng lại các phần tử DOM đã tạo (lấy từ [bình luận này] (https://github.com/angular/angular/issues/4795#issuecomment-151688714)). Vì vậy, nếu trong bootstrap của bạn, bạn đặt 'cung cấp (APP_VIEW_POOL_CAPACITY, {useValue: 0}' nó sẽ hoạt động độc đáo. Đây là [plnkr updated] (http://plnkr.co/edit/bqo9K5bru4CN1jZ4r9mt?p=preview) –