2016-09-29 27 views
10

Tôi có thành phần cha mở thành phần mới khi nhấp vào liên kết, thành phần mới này được cho là có nút đóng mà gần gửi một thông điệp đóng tới cha mẹ và tự hủy .Thành phần có thể gọi ra sự kiện tự hủy

Chúng tôi có thể gửi thông báo kết thúc bằng phương pháp ngOnDestroy, nhưng làm cách nào để gọi phá hủy thành phần con.

<parent> 
    <child></child> //child to be opened on click but close 
        //event should be inside the child componenet 
</parent> 

Làm đúng nếu tôi gặp phải một số lỗi khái niệm ở đây. Cảm ơn

Trả lời

15

Nếu bạn thêm một thành phần sử dụng ViewContainerRef.createComponent() như thể hiện trong Angular 2 dynamic tabs with user-click chosen components, sau đó các thành phần có thể phá hủy bản thân khi bạn vượt qua cmpRef với thành phần tạo ra.

Nếu không, tôi không nghĩ có cách nào. Bạn có thể chuyển giá trị cho phụ huynh để *ngIf xóa thành phần.

<child *ngIf="showChild" (close)="showChild = false"></child> 
class ParentComponent { 
    showChild:boolean = true; 
} 
class ChildComponent { 
    @Output() close = new EventEmitter(); 

    onClose() { 
    this.close.emit(null); 
    } 
} 
+1

Đó là một giải pháp gọn gàng, tôi cũng cần một cái gì đó giống như vài ngày này trước đây và tôi đã làm nó giống hệt nhau. Đừng nghĩ rằng có một cách tốt hơn để đạt được điều này vào lúc này. –

+0

@ Günter Zöchbauer bạn có thể trình bày cách sử dụng "close" trong bản đánh máy của thành phần con không? Chúng ta sẽ kích hoạt sự kiện gần như thế nào? –

+0

Cảm ơn câu trả lời của bạn –

-2

Không chắc về sự sạch sẽ của một giải pháp như vậy, nhưng tôi đã sử dụng:

this.viewContainerRef. 
     element.nativeElement. 
     parentElement. 
     removeChild(this.viewContainerRef.element.nativeElement); 
+1

@ daniele3004 để giải thích lý do bỏ phiếu phủ định? –

Các vấn đề liên quan