2016-05-06 26 views
6

Trong góc 2, có thể tạo nhanh một thành phần A theo cách thủ công, sau đó truyền xung quanh và hiển thị trong mẫu của thành phần B không?Có thể tự khởi tạo thành phần trong góc 2

+0

Chào mừng bạn đến SO xin vui lòng kiểm tra này [URL] (http://stackoverflow.com/help) nó sẽ được giúp đỡ bạn nâng cao chất lượng nội dung câu hỏi của bạn –

Trả lời

0

Có, được hỗ trợ. Bạn cần một ví dụ ViewComponentRef có thể lấy được bằng cách tiêm nó vào hàm khởi tạo hoặc sử dụng truy vấn @ViewChild('targetname')ComponentResolver cũng có thể được tiêm.

Mã này ví dụ từ https://stackoverflow.com/a/36325468/217408 cho phép ví dụ để thêm các thành phần năng động với *ngFor

@Component({ 
    selector: 'dcl-wrapper', 
    template: `<div #target></div>` 
}) 
export class DclWrapper { 
    @ViewChild('target', {read: ViewContainerRef}) target; 
    @Input() type; 
    cmpRef:ComponentRef; 
    private isViewInitialized:boolean = false; 

    constructor(private resolver: ComponentResolver) {} 

    updateComponent() { 
    if(!this.isViewInitialized) { 
     return; 
    } 
    if(this.cmpRef) { 
     this.cmpRef.destroy(); 
    } 
    this.resolver.resolveComponent(this.type).then((factory:ComponentFactory<any>) => { 
     this.cmpRef = this.target.createComponent(factory) 
    }); 
    } 

    ngOnChanges() { 
    this.updateComponent(); 
    } 

    ngAfterViewInit() { 
    this.isViewInitialized = true; 
    this.updateComponent(); 
    } 

    ngOnDestroy() { 
    if(this.cmpRef) { 
     this.cmpRef.destroy(); 
    }  
    } 
} 
+1

ví dụ này không cho phép instantiating một thành phần với dữ liệu. – dopatraman

+0

Không chắc chắn ý bạn là gì. Ví dụ hoàn chỉnh hơn trong câu trả lời được liên kết cho thấy cách truyền dữ liệu vào và ra. –

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