簡體   English   中英

父類的Angular2 EventEmitter

[英]Angular2 EventEmitter from parent class

我創建了一個抽象超類來處理我的應用程序中各種表單組件的泛型因素。

出於某種原因,我無法正確捕獲派生類發出的事件,其中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移動到派生類時,一切都像魅力一樣。 我需要更改什么才能使其正常工作?

Angular不承認超類中的這種裝飾器。

您可以使用@Component()注釋啟用它們

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

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

問題是@Component裝飾器不支持繼承(父類中定義的元素)。 它僅考慮當前修飾類中定義的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM