在我的 Angular 8 项目中,我有一个类(只是一个类,未作为组件实现),它提供了一些默认配置和方法。
这个类被多个组件扩展。如果同一视图上的多个组件(即同时存在)扩展该类,它们的实例似乎会相互覆盖。如果我在其中一个组件中覆盖了一个属性或方法,而另一个组件随后被实例化,那么覆盖就消失了。
我不知道为什么会这样。扩展类的构造函数被多次调用,所以理论上每个扩展类都应该创建自己的实例。
更新
我在这个 StackBlitz 演示中重现了这个问题:https ://stackblitz.com/edit/angular-hw1cv9
ListComponent 和 PopupComponent 都扩展了 DataGridComponent。在 ListComponent 中,我在模板中启用了导出功能,并且始终有效。我还覆盖了 onExporting 事件处理程序。如果您注释掉弹出窗口(或使用 *ngIf="popupVisible" 阻止它创建),此覆盖工作正常,但它会恢复到原来的弹出窗口功能。
(我不知道如何在演示中显示 devextreme 图标,抱歉。导出按钮在表格上方的左侧)。
用解决方案更新了演示