我创建了一个抽象超类来处理我的应用程序中各种表单组件的泛型因素。
由于某种原因,我无法正确捕获派生类发出的事件,而EventEmitter
是在超类中声明的。
超类:
export abstract class Form<T> implements OnInit {
@Output() submitted : EventEmitter<T> = new EventEmitter<T>();
fb : FormBuilder = new FormBuilder();
formModel : ControlGroup;
abstract ngOnInit() : any;
}
派生:
export class LoginFormComponent extends Form<Login> {
credentials : Login = new Login();
constructor() {
super();
}
doLogin() {
this.submitted.emit(this.credentials);
}
}
封装元素的HTML:
<login-form (submitted)="login($event)"></login-form>\
当我将EventEmitter
移动到派生类时,一切都像魅力一样。 我需要更改哪些内容才能生效?
答案 0 :(得分:4)
Angular不承认超类中的这些装饰器。
您可以使用@Component()
注释
@Component({
selector: '...',
outputs: ['submitted'],
inputs: ['...']
})
答案 1 :(得分:0)
问题是@Component
装饰器不支持继承(父类中定义的元素)。它仅考虑当前装饰类中定义的元素。