Angular 4:如何创建基类的可重用模块

时间:2017-07-03 12:12:42

标签: angular typescript

我有一些抽象/基类,它们由其他应用程序中的其他模块继承。这些不是服务,也不是组件 - 只包含不同组件使用的一些常用功能 - 这些组件将用于多个不同的项目中。 例如,我有一个基本输入类,它由字母数字输入类继承,然后由一个字母和字母数字输入组件继承,它有自己独立的模块和npm包,可以在将来的项目中使用。

我的计划是创建一个基本模块:组件模块可以导入和扩展的基类集合,但是我不能声明或提供没有@ Component / @ Pipe / @ Directive或@Injectable装饰器的普通类。 / p>

如果我用@Injectable修饰每个基类,代码似乎会编译 - 但这些不是服务,只是稍后要继承的代码所以我不知道这是否是正确的/可接受的方法。

使用要在其他几个独立组件中使用的通用类集合来定义此类基本模块的最佳方法是什么? 理想情况下,每个这样的组件都应该有自己的模块和npm包,并且依赖于基类集合包。

1 个答案:

答案 0 :(得分:0)

根据我在Angular中使用extend关键字的经验是一个非常糟糕的主意,因为它违背了框架试图表示的概念,可以被视为反模式。您基本上试图避免使用Dependency Injection,这是此框架的关键部分。

您真正想要做的是创建自己的模块,其中包含PipesComponentsInjectables(也称为Services)。

如果您想为其中一个组件/服务/管道等添加功能,您应该创建一个将要注入的服务,使测试和维护更容易。

e.g。每当我使用momentjs时,我都会开始创建一个包含库功能的服务。