2017-05-03 78 views
3

點擊父模板中的按鈕時是否可以加載子組件?舉例來說,父模板HTML看起來像:點擊角度2加載子組件點擊

<button (click)="loadMyChildComponent();">Load</button> 
<my-child-component></my-child-component> 

我想那樣做是因爲我的孩子組分需要一些時間來加載,它會減慢一切的原因。因此,我只想在用戶點擊加載它時加載它。我無法更改父級模板結構。它必須在那裏。

我想只在加載按鈕被點擊時才進入子組件的ngOnInit。

回答

4

您可以使用* ngIf指令爲INITING組件,所以你的代碼會是這樣

<button (click)="loadMyChildComponent();">Load</button> 
<my-child-component *ngIf="loadComponent"></my-child-component> 

loadMyChildComponent() { 
    loadComponent = true; 
    ... 
} 
2

。利用標誌來控制子組件的負荷。

<button (click)="loadMyChildComponent();">Load</button> 
<div *ngIf= 'loadComponent'> 
<my-child-component></my-child-component> 
</div> 

在你父組件.TS

private loadComponent = false; 
    loadMyChildComponent(){ 
     this.loadComponent = true; 
    } 
1

可以使用或許是最根本的指令ngIf

<button (click)="loadMyChildComponent();">Load</button> 
<my-child-component *ngIf="loaded"></my-child-component> 

在你的組件

loadMyChildComponent(){ 
loaded=true; 
} 
2
<button (click)="loadMyChildComponent()">Load</button> 
<div [hidden]="hide"> 
<my-child-component></my-child-component> 
</div> 

在父類中聲明varible隱藏,使功能loadMyChildComponent

public hide = true; 
    loadMyChildComponent(){ 
     this.hide= true; 
    } 
+0

這會不會只是加載,然後隱藏組件?我不希望它加載之前點擊按鈕 – Dino

+0

任何它將如何被點擊後按鈕代替載入chlid而父母被加載 –

+0

@masterfan它不會加載你的組件。你可以做控制檯登錄'ngOnInit()'並檢查。 –