2017-05-03 53 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()'并检查。 –