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

使用相同的选择器扩展组件-Angular 2/Angular CLI,angular,inheritance,webpack,angular-cli,aot,Angular,Inheritance,Webpack,Angular Cli,Aot,我们正在使用angular为我们的核心应用程序构建一个很好的组件前端。我们有多个客户要求对这些核心组件进行非常小的定制。我想在NPM包中保留我们的核心代码,然后通过扩展每个客户端应用程序中的组件来进行这些细微的修改 为了做到这一点,我需要扩展一个子组件,但保留相同的选择器(否则我必须修改每个父组件) 通过将原始组件导入扩展组件并使用指向templateUrl的节点模块的相对链接,我已经能够使用aot=false构建来实现这一点。然后我在app.module中声明扩展组件,并从app.module

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

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

通过将原始组件导入扩展组件并使用指向templateUrl的节点模块的相对链接,我已经能够使用aot=false构建来实现这一点。然后我在app.module中声明扩展组件,并从app.module中删除原始组件(这样选择器就不会冲突)

只要aot=false,这就可以正常工作,但如果aot为true,则在构建时原始组件会出现“无法确定类的模块”错误


有没有办法从一个组件扩展到另一个组件,保持选择器不变,并且仍然从AOT编译中获益?

不确定您是否可以在不改变策略的情况下实现目标(请看一看)

就我个人而言,我会尝试使用与customer类()结合的机制,为您提供组件的正确实现:如果您有customer类,则加载它;否则为默认值


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

您可以使用不带
@Component()
注释的基类,只将它们添加到具体的实现中。您能分享一下您的决定吗?你接受莫的建议了吗?我真的很抱歉。我想我们可能永远都不会忘记离开aot=false,因为我在这个问题发布后不久就离开了这个项目。我认为@Mau是对的,我的方法需要重新考虑。如果我再这样做的话,我可能会调查mixins。这是一篇很有帮助的文章,希望我能给你一个更好的回复