2017-10-18 116 views
0

我们正在使用angular为我们的核心应用程序构建一个很好的组件前端。我们有多个客户请求对这些核心组件进行非常小的定制。我想在NPM包中保留我们的核心代码,然后通过在每个客户端应用程序中扩展组件进行微小的修改。使用相同的选择器扩展组件 - Angular 2/Angular-CLI

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

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

这工作正常,只要aot = false,但与一个真正的,我得到一个“错误在无法确定模块的类”错误的构建原始组件。

是否有任何方法可以从另一个组件扩展一个组件,使选择器保持相同,并仍然受益于AOT编译?

+1

您可以使用不带'@Component()'注释的基类,只将其添加到具体的实现部分。 –

回答

0

不确定你可以在不改变策略的情况下实现目标(看看selector-conflicts)。个人而言,我会尝试使用dynamic component loader机制与客户类(Injection Beyond Classes)结合使用,以便正确实施您的组件:如果您有客户,请加载该组件;否则是默认的。

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