使用相同的选择器扩展组件 - Angular 2 / Angular-CLI

时间:2017-10-18 03:34:01

标签: angular inheritance webpack angular-cli aot

我们正在使用angular为我们的核心应用程序构建一个不错的组件前端。我们有多个客户要求对这些核心组件进行非常小的定制。我想在NPM包中保留我们的核心代码,然后通过在每个客户端应用程序中扩展组件来进行那些微小的修改。

为了做到这一点,我需要扩展一个子组件,但保持相同的选择器(否则我必须修改每个父组件)。

通过将原始组件导入扩展组件并使用与templateUrl的node_modules的相对链接,我已经能够使用aot = false构建执行此操作。然后我在app.module中声明扩展组件并从app.module中删除原始组件(因此选择器不会冲突)。

只要aot = false就可以正常工作,但是如果是真的,我会在构建时得到“无法确定类的模块错误”错误。

有没有办法将一个组件从另一个组件扩展,保持选择器相同,仍然可以从AOT编译中受益?

1 个答案:

答案 0 :(得分:0)

不确定如果不改变策略就能实现目标(请查看selector-conflicts)。

就个人而言,我会尝试使用dynamic component loader机制与客户类(Injection Beyond Classes)相结合,为您提供组件的正确实现:如果您有客户,则加载该组件;否则是默认的。

当然,组件将有不同的选择器。