非常简单的基类Closer
import {EventEmitter, Output} from 'angular2/core';
export class Closer {
@Output() closed: EventEmitter<any> = new EventEmitter();
constructor() {}
close() {
this.closed.emit({});
}
}
如果我
extends Closer
另一个类,然后用标记它<derived-class (closed)="closeHandler()"></derived-class>
closeHandler()
将永远不会被调用。我可以看到Closer.close()
被调用,但是发射不会被派生类传播,也不会被其模板包含派生类和事件绑定(bind)的类处理。如果我只是简单地将
@Output
移动到派生类,则它可以工作。但是,似乎Angular2应该将其放在派生类上。完全定义一组行为并继承它的能力将是不错的。 最佳答案
今天早上我遇到了同样的问题,只是想出了解决方法。您所需要做的就是将输出:['closed'] 添加到扩展Closer的派生类的组件部分,您必须从Closer类内部的封闭声明中删除 @Output()
这是一个基于您的示例的快速演示:
派生类:
@Component({
selector: 'derived-class',
outputs: ['closed']
})
export class DerivedClass extends Closer {}
进修类:
import {EventEmitter} from 'angular2/core';
export class Closer {
closed: EventEmitter<any> = new EventEmitter();
constructor() {}
close() {
this.closed.emit({});
}
}
关于event-handling - Angular 2基类输出EventEmitter不会被引发或处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36434181/