Passer une fonction callback à un composant enfant Angular via @Input comme dans AngularJS
Bonjour ! Je passe d'AngularJS à Angular (2+) et je n'arrive pas à comprendre comment passer correctement une fonction callback à un composant enfant. Dans AngularJS, je faisais comme ça :
```javascript
// Parent
// Child
scope.$on('save', function(event, data) {
// appel de la fonction parente
scope.onSave({$event: data});
});
```
Maintenant dans Angular, j'essaie de passer une fonction via @Input :
```typescript
// Parent component
@Component({
template: ` `
})
export class ParentComponent {
saveHandler(data: any) {
console.log('Saved:', data);
}
}
// Child component
@Component({...})
export class ChildComponent {
@Input() onSave: (data: any) => void;
someMethod() {
this.onSave({name: 'test'}); // TypeError: this.onSave is not a function
}
}
```
Mais j'obtiens une erreur indiquant que la fonction n'est pas définie. J'ai lu que dans Angular, il est préférable d'utiliser @Output et EventEmitter, mais j'ai besoin de l'utiliser.