Angular库应如何与代码交互

时间:2018-12-26 08:48:44

标签: angular

我正在为Angular应用程序编写库,Angular的实现方式是什么?它应该使用要由应用程序其余部分使用的服务,还是应该编写一个带有要使用的函数的普通打字稿类?

其功能如下:

ConverterLib.convert(100, ConverterLib.UNITS.liters, ConverterLib.UNITS.milliliters)

我假设使用服务,因为ng generate在库文件夹中创建了服务。

1 个答案:

答案 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
        }
    }
}

What is pure function ?

相关问题