jky*_*sey 6 base-class derived-class event-handling eventemitter angular
非常简单的基类 Closer
import {EventEmitter, Output} from 'angular2/core';
export class Closer {
@Output() closed: EventEmitter<any> = new EventEmitter();
constructor() {}
close() {
this.closed.emit({});
}
}
Run Code Online (Sandbox Code Playgroud)
如果我是extends Closer另一个班级然后用它来标记
<derived-class (closed)="closeHandler()"></derived-class>
Run Code Online (Sandbox Code Playgroud)
closeHandler()永远不会被召唤.我可以看到Closer.close()被调用但是emit不会被派生类传播,也不会被其模板包含派生类和事件绑定的类处理.
如果我只是将其移动@Output到派生类,它就可以工作.但似乎Angular2应该将它放在派生类上.完全定义一组行为并继承它的能力会很好.
今天早上我遇到了同样的问题,并且想出了怎么做.您所要做的就是将输出:['closed']添加到派生类的组件部分,该类扩展Closer,您必须从Closer类中的关闭声明中删除@Output()
这是一个基于您的示例的快速演示:
派生类:
@Component({
selector: 'derived-class',
outputs: ['closed']
})
export class DerivedClass extends Closer {}
Run Code Online (Sandbox Code Playgroud)
更接近的类:
import {EventEmitter} from 'angular2/core';
export class Closer {
closed: EventEmitter<any> = new EventEmitter();
constructor() {}
close() {
this.closed.emit({});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |