将回调函数通过 @Input 从 Angular 父组件传递到子组件,如同在 AngularJS 中一样
你好!我正在从 AngularJS 迁移到 Angular (2+),但无法理解如何正确地将 callback 函数传递给子组件。在 AngularJS 中,我是这样做的:
```javascript
// Parent
// Child
scope.$on('save', function(event, data) {
// 调用父函数
scope.onSave({$event: data});
});
```
现在在 Angular 中,我尝试通过 @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
}
}
```
但我收到错误,提示函数未定义。我读到在 Angular 中最好使用 @Output 和 EventEmitter,但我需要它