我創建了一個抽象超類來處理我的應用程序中各種表單組件的泛型因子。父類中的Angular2 EventEmitter
出於某種原因,我無法正確地捕獲派生類發出的事件,這些派生類的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
移動到派生類時,一切都像魅力一樣。 我需要更改什麼才能使其工作?
我沒有在繼承類'@ Component'裝飾,因爲它是'abstract'啓用它們。我仍然可以使用此解決方法嗎? –
您需要將它添加到實際用作組件的類上,它在其他地方沒有任何效果。另外,@Input()和@Output()裝飾器在超類中是多餘的(至少在Angular團隊決定在超類中支持它們的時候) –