非常简单的基类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()正在被调用,但它不会由派生类传播,也不会由模板包含派生类和事件绑定的类处理。
如果我简单地将@Output移动到派生类,它就能工作。但是Angular2似乎应该把它放在派生类上。完全定义一组行为并继承它的能力将是很好的。
发布于 2016-04-22 14:36:20
今天早上我也遇到了同样的问题,我只是想出了办法。您所要做的就是将输出:“关闭”添加到扩展更紧密的派生类的components部分,并且必须将@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({});
}
}https://stackoverflow.com/questions/36434181
复制相似问题