Übergabe einer Callback-Funktion an eine Angular-Kindkomponente über @Input wie in AngularJS
Hallo! Ich wechsle von AngularJS zu Angular (2+) und verstehe nicht, wie ich eine Callback-Funktion korrekt an eine Kindkomponente übergebe. In AngularJS habe ich es so gemacht:
```javascript
// Parent
// Child
scope.$on('save', function(event, data) {
// rufe die Elternfunktion auf
scope.onSave({$event: data});
});
```
Jetzt in Angular versuche ich, eine Funktion über @Input zu übergeben:
```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
}
}
```
Aber ich erhalte einen Fehler, dass die Funktion nicht definiert ist. Ich habe gelesen, dass man in Angular dafür besser @Output und EventEmitter verwendet, aber ich muss sie verwenden.