来自父类的 Angular2 EventEmitter

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派生类时,一切都像魅力一样工作。我需要改变什么才能让它发挥作用?

Gün*_*uer 5

超类中的此类装饰器不被 Angular 识别。

您可以使用@Component()注释启用它们

@Component({
  selector: '...',
  outputs: ['submitted'],
  inputs: ['...']
})
Run Code Online (Sandbox Code Playgroud)

另请参阅https://github.com/angular/angular/issues/5415