Angular 2/4 - 扩展第三方模块

时间:2017-12-02 08:23:53

标签: angular typescript inheritance

背景 我们正在Angular 4中构建一个所谓的大型Web应用程序。出于显而易见的原因,我们使用第三方组件来引入数据网格和其他一些控件等高级功能。我正在使用DevExtreme控件,但此问题可以应用于任何其他第三方控件提供程序。

问题陈述 我们如何安全防范未来场景,我们在多个位置使用了第三方组件,但现在想要为底层组件本身添加新功能。让我们说,我使用第三方按钮控件。我们点击按钮,它使用(onClick)来调用它所使用的组件中的方法。到目前为止,一切都很好。如果我们将来决定点击每个按钮还应捕获点击频率信息,以便可以生成关于客户端如何使用某个网页的热图。这是一个假设的场景,仅用于此问题陈述的目的。

我们如何确保可以在一个地方进行这些修改,而不是说使用按钮的300个位置?

如何在Java / C#中完成此操作 我们只需创建自己的类MySuperButton,然后从第三方耗材按钮类继承它。然后我们可以覆盖某些基本方法并编写我们自己的扩展逻辑实现。然后我们将在整个应用程序中使用此MySuperButton对象,而不是直接使用第三方供应商按钮。

已知限制的已知解决方案 组合是到处描述的技术,以实现上述目的。这意味着我们创建自己的MySuperButtonComponent并在其中创建第三方按钮实例。然后我们编写自己的代码来映​​射我们的MySuperButton上的onClick处理程序到它的底层第三方按钮实例。 这种方法的局限性在于它的构成与继承。

为什么继承不是最好的 继承会以更加干净的方式解决这个问题,但是我不能在Angular 2/4中继承模板,样式,装饰器等。这导致了大量的重写。

我希望这个问题有道理,我相信很多人都在努力解决同样的问题。我不确定自那以后是否有更好的解决方法。

0 个答案:

没有答案