如何在Angular 4模块中导出简单的TypeScript类?

时间:2018-07-26 22:50:41

标签: angular typescript angular-module ng-packagr

我有一个简单的TypeScript类,我想将其与模块包装在一起,并最终使用ng-packagr将该模块导出为库。

例如我的班级定义是-

export class Params {
    language: string ;
    country: string ;
    variant:  string ;
    dateFormat:  string ;
    briefDateTimeFormat:  string ;
    decimalFormat:  string ;
}

例如我的模块定义是-

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Params } from '../params/params';
import { LoginService } from '../sso/login.service';

@NgModule({
  imports: [CommonModule],
  exports: [Params],
  providers: [LoginService]
  declarations: [Params, LoginService]
})
export class FoundationModule { }

但是当我尝试导出FoundationModule的{​​{1}}中的public-api.ts时,出现以下错误-

ng-packagr

如何在Angular模块中打包单个类?

2 个答案:

答案 0 :(得分:1)

两个选项。

export class Params {
language: string;
country: string;
variant: string;
dateFormat: string;
briefDateTimeFormat: string;
decimalFormat: string;
constructor(obj: any) {
    this.language = obj && obj.language || null;
    this.country = obj && obj.country || null;
    this.variant = obj && obj.variant || null;
    this.dateFormat = obj && obj.dateFormat || null;
    this.briefDateTimeFormat = obj && obj.briefDateTimeFormat || null;
    this.decimalFormat = obj && obj.decimalFormat || null;
}

}

export interface Params {
    language: string;
    country: string;
    variant: string;
    dateFormat: string;
    briefDateTimeFormat: string;
    decimalFormat: string;
}

正如第一个答案所说,类或接口不在模块上。

Stackoverflow reference

Angular reference

答案 1 :(得分:0)

问题出在您的模块定义中。您应该将Params直接导入需要该类的每个组件/服务中。

public-api.ts

import { Params } from '../params/params';

...
newVariable: Params = {
  language: 'my language',
  ...
}