我想从父类向子ngOnInit方法添加代码。我能做点类似的事吗?
export class Child extends Parent {
constructor(){
super(this.ngOnInit);
}
ngOnInit(){
console.log('Child onInit');
}
}和家长:
export class Parent {
constructor(childOnInitMethod: any){}
ngOnInit(){
console.log('Parent added code to child onInit');
this.childOnInitMethod.apply(this, arguments)
}
}问题是,在子构造函数上,我没有"this“可用。
更新:在这里找到当前代码
现在,这就是我所做的。子类扩展父类的ngOnInit和ngOnDestroy。我希望实现的是避免调用父级“super.subscribeEvents()”,如下所示:
ngOnInit() {
window.onresize = () => console.log('resizing');
super.subscribeEvents();
}我想要做的是从父级向子ngOnInit添加代码。这些课程包括:
export class DatatablePage extends EventSubscriber {
@Output() onLoadRow: EventEmitter<any> = new EventEmitter();
public gridApi: GridApi;
constructor(
events: Events
) {
super(events, [
{ eventName: 'datatable:updateList', callbackFunction: () => this.onLoadRow.emit() },
{ eventName: 'datatable:resizeTable', callbackFunction: () => this.gridApi.sizeColumnsToFit() }
])
}
ngOnInit() {
window.onresize = () => console.log('resizing');
super.subscribeEvents();
}
}和家长:
export class EventSubscriber {
constructor(
private events: Events,
public eventSubscriptions: EventObject[]
) {
}
ngOnInit() {
this.subscribeEvents();
}
ngOnDestroy() {
this.unsubscribeEvents();
}
subscribeEvents() {
this.eventSubscriptions.forEach((eventSubscription: EventObject) => {
this.events.subscribe((eventSubscription.eventName), eventSubscription.callbackFunction)
});
}
unsubscribeEvents() {
this.eventSubscriptions.forEach((eventSubscription: EventObject) => {
this.events.unsubscribe((eventSubscription.eventName), eventSubscription.callbackFunction)
});
}
}发布于 2018-10-02 18:14:14
下面的解决方案应该有效。
class Parent {
constructor(){}
ngOnInit(){
console.log('Parent added code to child onInit');
this.ngOnInit()
}
}
class Child extends Parent {
ngOnInit() {
console.log('Child onInit');
}
invokeSuperOnInit() {
super.ngOnInit();
}
}
const a = new Child();
a.invokeSuperOnInit();处决:
https://stackoverflow.com/questions/52613843
复制相似问题