来自父类的Angular2 EventEmitter

标签 angular typescript events inheritance

我创建了一个抽象父类(super class)来处理我应用中各种表单组件的通用因素。

出于某种原因,我无法正确捕获由在父类(super class)中声明了 EventEmitter 的派生类发出的事件。

父类(super class):

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 移动到派生类时,一切都非常顺利。 我需要更改什么才能使其正常工作?

最佳答案

Angular 无法识别父类(super class)中的此类装饰器。

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

@Component({
  selector: '...',
  outputs: ['submitted'],
  inputs: ['...']
})

另见 https://github.com/angular/angular/issues/5415

关于来自父类的Angular2 EventEmitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743093/

相关文章:

javascript - 为什么在 Typescript 中调用第三方 API 时 Axios 的 onUploadProgress 永远不会触发?

c# - 在 WPF 中将事件从样式传播到 MainWindow

javascript - 如何在 Angular View 中用空格 (' ' ) 替换下划线 (_)?

javascript - 为什么分配给变量(别名条件)时对类属性的类型缩小检查不起作用?

Angular-MDC 返回 "No mixin named mdc-top-app-bar-fill-color"

typescript - 启用 `strictNullChecks` 后, `void` 类型和 `undefined` 文字类型有什么区别?

javascript - 当鼠标位于行上时,防止行内的编辑控件闪烁

jQuery CSS 更改事件

typescript - 如何将 bool 值绑定(bind)到 Angular 2 中属性的存在?

javascript - 如何在 Angular 2 CLI 中使用 "ng build --prod"和 "ng serve --prod",出现 404 错误