我正在为Angular应用程序编写库,Angular的实现方式是什么?它应该使用要由应用程序其余部分使用的服务,还是应该编写一个带有要使用的函数的普通打字稿类?
其功能如下:
ConverterLib.convert(100, ConverterLib.UNITS.liters, ConverterLib.UNITS.milliliters)
我假设使用服务,因为ng generate在库文件夹中创建了服务。
答案 0 :(得分:-1)
做到这一点的有角度的方法是将其包装在服务中,然后module.forRoot,
但是我想您所有的转换都是纯函数。因此,您的服务只是“包装器”。这样,以后,您将可以在任何其他项目中使用此纯函数,而无需处理内部角度代码。
@NgModule({})
export class ConverterModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: ConverterModule,
providers: [ ConverterService ]
}
}
}
和您的app.module
@NgModule({
import: [
ConverterModule.forRoot()
]
})
export class AppModule{ }
您的服务应该是这样的:
@Injectable()
export class ConverterService {
convert(value, unitFrom, unitTo) {
switch (unitFrom) {
case ConverterLib.UNITS.liters:
return this.convertFromLiters(value, unitTo);
// [...]
}
}
protected convertFromLiters(value, unitTo) {
switch (unitTo) {
case ConverterLib.UNITS.milliliters:
return convertLitersToMilliliters(value); // Pure function
}
}
}