网站搜索

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


我无法从自定义库中导出一个类并在应用程序中正确导入。作为类型使用是可行的,但用构造函数使用则不行。

我的库正在工作……我可以使用模块、组件、服务创建的内容。如果我只是添加一个简单导出的类,我在应用中无法正确使用它。

错误在 ./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
    }
}

库已正确编译,无错误。在 dist 中

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

公共_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';

那么它正在工作。但这不是自定义库的正确使用方式。

我希望能够像在库中那样在应用中使用一个类。

答案#1

你必须扩展,但永远不要尝试使用外部库,但应该可以工作 :)

试试这个

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

我也看到你的导入很奇怪。试试这样做

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