2017-09-11 4 views
0

J'ai composants parentsComment appeler la fonction du composant enfant dans le composant parent

<div md-dialog-content> 
    <div class="section-top"> 
    <p id="title" style="float:left;">Adding Dockument</p> 
    <div md-dialog-actions style="float:right;"> 
     <button class="edm-button inline" md-button (click)="onNoClick()" tabindex="-1">Cancel</button> 
     <button class="edm-button inline" md-button (click)="onClick()" tabindex="-1">Confirm</button> 
    </div> 
    </div> 
    <div> 
    <app-document-data [buttonMessage]="buttonMessage"></app-document-data> 
    </div> 
</div> 

Dans le composant de l'enfant que j'ai méthode onSubmit() {}

J'ai une question quand appeler onSubmit() Fonction quand je clique sur un bouton confirmer dans le composant parrent.

Je sais que je devrais probablement utiliser @Input et @Output décorateur mais je ne sais pas comment correctement.

+0

La méthode onSubmit appartient-elle au composant app-document-data? – Faly

+0

@Faly, oui la méthode onSubmit appartient à app-document-data –

Répondre

1

Il est encore plus facile: donner à votre enfant une référence de modèle, et vous pouvez appeler ses fonctions comme ceci: (je suppose que votre deuxième bouton fera l'appel)

<div md-dialog-content> 
    <div class="section-top"> 
    <p id="title" style="float:left;">Adding Dockument</p> 
    <div md-dialog-actions style="float:right;"> 
     <button class="edm-button inline" md-button (click)="onNoClick()" tabindex="-1">Cancel</button> 
     <button class="edm-button inline" md-button (click)="appDD.onSubmit()" tabindex="-1">Confirm</button> 
    </div> 
    </div> 
    <div> 
    <app-document-data #appDD [buttonMessage]="buttonMessage"></app-document-data> 
    </div> 
</div> 
+0

Ceci est plus une suggestion pas une réponse à sa question peut être affichée comme un commentaire. – Swoox

+0

Eh bien, essayez-le yourslef et postez le code dans un commentaire! – trichetriche

+0

Semble ne pas fonctionner pour moi. ** Impossible de lire la propriété 'save' undefined ** '' ' bouton Enregistrer' – Swoox

1

Dans votre composant parent:

onClick(){ 
    this.buttonMessage = true; 

votre enfant:

@Input() buttonMessage: boolean; 

Et un nGOnChanges:

ngOnChanges(changes: any) { 
    if(changes.buttonMessage.currentValue){ 
    this.onSubmit(); 
+0

Swoox ça marche très bien, ngOnchanges() en exécute seulement un, mais j'ai besoin de cette méthode exécute plus que celle que j'essaye dans ngOnChanges set buttonMessage = false et utilise maintenant @ Sortie pour envoyer des données au parent –

+1

C'est parce que vous devez changer la valeur à false à nouveau. ngOnChanges fonctionne sur le changement non si ** buttonMessage.currentValue === true ** et ** buttonMessage.previousValue === true **. Il doit être ** buttonMessage.previousValue === false **. * Désolé pour la réponse tardive * – Swoox

+0

je trouve plus simple façon seulement en utilisant la référence locale Zatwierdź –