Angular 7.x-无法从自定义库导出类

时间:2019-10-09 13:33:05

标签: angular typescript

我无法从自定义库中导出类并正确导入应用中。按类型使用有效,但与构造函数一起使用无效。

我的库正在运行...我可以使用从中创建模块,组件和服务。如果仅添加一个简单的导出类,则无法在应用程序中正确使用。

  ./src/app/demo/demo.component.ts中的

错误   找不到模块:错误:无法解析“ mylib / lib / global / module1 / testClass.class”

如果我在组件中使用带有构造函数的类,则会发生这种情况...

project / mylib / src / lib / global / module1 / testClass.class.ts

export class DemoClass {
    text: string;

    constructor(text:string) {
        this.text = text
    }
}

库已正确编译,没有错误。在远处

export declare class DemoClass {
    text: string;
    constructor(text: string);
}

public_api.ts

export * from './lib/global/module1/testClass.class';

在./src/app/demo/demo.component.ts

import { DemoClass } from 'mylib/lib/global/module1/testClass.class';

@Component({
    selector: 'app-demo',
    templateUrl: './demo.component.html',
    styleUrls: ['./demo.component.scss']
})

export class DemoComponent implements OnInit {

    // This will work
    demo: DemoClass = { text: "lorem ipsum" }

    // This will not work and provide error 'Module not found: Error: Can't resolve '
    demo2: DemoClass = new DemoClass('lorem ipsum')

    constructor() { }

    ngOnInit() {

    }
}

修改 可能相关的是,如果我像这样导入我的课程

{ testClass } from projects/mylib/src/lib/global/module1/testClass.class';

然后它正在工作。但这不是自定义库的正确用法。

我希望能够像在lib中一样在应用程序中使用类。

1 个答案:

答案 0 :(得分:1)

您必须扩展,但不要尝试使用外部库,但应该可以:)

尝试一下

export class DemoComponent extends DemoClass implements OnInit {
  ... 
  constructor(text: string) {
     super(text); // DemoClass constructor params
  }
  ...
}

我也看到您的导入很奇怪。像这样尝试

import { DemoClass } from 'mylib/lib/global/module1/testClass';