Dov*_*ski 5 events inheritance typescript angular
我创建了一个抽象超类来处理应用程序中各种表单组件的通用因素。
EventEmitter由于某种原因,我无法正确捕获在超类中声明的派生类发出的事件。
超类:
export abstract class Form<T> implements OnInit {
@Output() submitted : EventEmitter<T> = new EventEmitter<T>();
fb : FormBuilder = new FormBuilder();
formModel : ControlGroup;
abstract ngOnInit() : any;
}
Run Code Online (Sandbox Code Playgroud)
衍生的:
export class LoginFormComponent extends Form<Login> {
credentials : Login = new Login();
constructor() {
super();
}
doLogin() {
this.submitted.emit(this.credentials);
}
}
Run Code Online (Sandbox Code Playgroud)
封装元素的HTML:
<login-form (submitted)="login($event)"></login-form>\
Run Code Online (Sandbox Code Playgroud)
当我将 移至EventEmitter派生类时,一切都像魅力一样工作。我需要改变什么才能让它发挥作用?
超类中的此类装饰器不被 Angular 识别。
您可以使用@Component()注释启用它们
@Component({
selector: '...',
outputs: ['submitted'],
inputs: ['...']
})
Run Code Online (Sandbox Code Playgroud)
另请参阅https://github.com/angular/angular/issues/5415