2017-05-03 7 views
3

Ist es möglich, die untergeordnete Komponente zu laden, wenn auf die Schaltfläche in der übergeordneten Vorlage geklickt wird? Zum Beispiel würde das übergeordnete Vorlage html wie folgt aussehen:Angular 2 lädt untergeordnete Komponente auf Klick

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

Der Grund, warum ich es tun möchte, so, weil das ist mein-Kind-Komponente einige Zeit dauert zu laden und es verlangsamt alles. Daher möchte ich es nur laden, wenn der Benutzer darauf klickt, um es zu laden. Ich kann die Elternvorlagenstruktur nicht ändern. Es muss da sein.

Ich möchte ngOnInit der Kindkomponente nur eingeben, wenn die Schaltfläche zum Laden geklickt wird.

Antwort

4

Sie können mit * ngIf Richtlinie Komponente für Initing, so dass Ihr Code wie diese Verwendung von Flag

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

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

Fabrikat sein wird, die Last der Kinderkomponente zu steuern.

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

In Ihrer Stammkomponente .ts

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

können Sie verwenden vielleicht die grundlegendste Richtlinie ngIf

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

In Ihrer Komponente

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

In Elternklasse die varible verstecken erklären und eine Funktion loadMyChildComponent

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

Wird dies nicht nur laden und dann die Komponente verstecken machen? Ich möchte nicht, dass es vor dem Klicken auf Schaltfläche – Dino

+0

lädt, wie es nach dem Klicken auf die Schaltfläche anstelle der Lade Chlid geladen wird, während der Eltern geladen wird –

+0

@masterfan Es wird nicht geladen Ihre Komponente. Sie können die Konsole loggen 'ngOnInit()' und überprüfen. –

Verwandte Themen