Angulaire 5 entrée de Composant fonction qui prend en paramètres

Dans Angulaire 2+ composant, comment puis-je passer dans une fonction de rappel qui prend des paramètres?
Mon hypothèse de départ était quelque chose comme

<app-example [onComplete]="doThing('someParam')"></app-example>

Et parfois, je n'aurez pas besoin de paramètres, comme ceci:

<app-example [onComplete]="doSomeThingElse()"></app-example>

Et puis, en le composant, j'ai

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
})
export class ExampleComponent {
  @Input() public onComplete: () => void;

  //run `this.onComplete()` somewhere as needed
}

Mais, ce qui finit par arriver, c'est que le doThing('someParam') ou doSomeThingElse() est immédiatement appelé sans aucune interaction.

Comment suis-je censé passer des fonctions de rappel à un composant appelé plus tard?


EDIT:

Le réel problème, je suis en train d'essayer de résoudre ici est d'être en mesure d'exécuter tout passé en fonction au plus tard. C'est un composant de confirmation qui va demander à l'utilisateur "êtes-vous sûr de vouloir continuer?" et puis si ils appuyez sur la touche "Oui j'en suis sûr", le passé en fonction d'exécution.

n'est-ce pas réinventer la roue avec des événements et potentiellement dangereux, avec des fuites de mémoire? (et non pas la solution mais l'intention elle-même)
bind méthode de retour d'une fonction nouvelle à chaque fois angulaire des appels à la détection de changement de cycle. Je suis d'accord, il ne faut pas réinventer la roue)
vous devriez lire sur @Sortie. C'est ce que vous cherchez.
Je sais de @Output pour transmettre des valeurs de retour d'un contrôleur de parent, mais je ne suis pas sûr de savoir comment j'allais utiliser qu'ici, dans ce contexte. N'hésitez pas à ajouter une réponse à cette question avec les détails, et je vais le marquer comme étant correcte. De me dire de "lire sur" quelque chose n'est pas très utile pour moi en ce moment.
vous pourriez être mieux fait de décrire le problème que vous souhaitez résoudre. Problème n'étant pas de "passage d'une fonction de rappel comme variable' mais un réel problème que vous souhaitez que votre composant(s) à résoudre. Solution habituelle pour ce type d'analyse est d'envoyer des paramètres à l'enfant comme @Input params et ensuite événement lié avec @Output et de l'événement seront soulevées à ce que les arguments que vous voulez. Lorsque l'événement est déclenché, votre parent composant d'appel quelle que soit la fonction qu'il veut (votre rappel dans le cas ci-dessus) avec tout ce que les paramètres qu'il a obtenu par le biais de l'événement.

OriginalL'auteur Chris Barr | 2017-12-28