我有一个parent
和一个child
组件。 parent
组件实际上是一个页面。 child
组件想要做一些与数据库相关的干净工作。
关闭parent
页面/组件时。我想是
child ngOnDestroy
- > child cleanWork
- > parent ngOnDestroy
。
实际是
child ngOnDestroy
- > parent ngOnDestroy
。
//父母
@Component({
selector: 'parent',
template: `
<child
(cleanWork)="onCleanWork()">
</child>
`
})
export class ParentComponent {
ngOnDestroy() {
console.log('parent ngOnDestroy');
}
onCleanWork() {
console.log('child cleanWork');
// dispatch an action, or do something with database
}
}
//孩子
@Component({
selector: 'child',
template: `Hi`
})
export class ChildComponent {
@Output() cleanWork = new EventEmitter();
ngOnDestroy() {
console.log('child ngOnDestroy');
this.cleanWork.emit(null);
}
}
我在孩子里面做清洁工作的原因是因为我希望孩子 dumb 。有没有其他/更好的方法?感谢
答案 0 :(得分:0)
我会从child
创建对parent
的引用:
@ViewChild(ChildComponent) child: ChildComponent;
然后在parent
需要时调用清理路由(您的ngOnDestroy
)
ngOnDestroy() {
child.cleanup();
}
答案 1 :(得分:0)
我得到了Gitter的Brandt B. @babeal的帮助。
由于我使用的是ngrx / store,我应该将所有与数据库相关的操作放在父智能组件中,而不是先在子组件中放置emit
,然后在父组件中执行操作。
在这种情况下,我应该直接在父组件中进行清理工作。