如何使用次要端点为 Angular 库创建 API

How to use secondary endpoints to create API for Angular library

场景:

我使用 ng-packagr 创建了自定义 UI 库,导出了自定义 components 和一些模型 classes。

问题:

在主项目中,import 语句适用于导出的组件,但不适用于导出的 classes 并且 webpack 无法编译并给出错误:

module not found error can't resolve my-custom-library/models

库项目代码:

型号class:src/app/modules/my-custom-module/models/my-model.ts

export class MyModel {
  constructor() {
    // default values for props here
  }

  // ...props here
}

索引文件:src/app/modules/my-custom-module/models/index.ts

export * from './my-model';
export * from './my-other-model';

在根目录导出文件:models.ts

export * from './src/app/modules/my-custom-module/models/index';

ng-packagr 根目录下的文件:public_api.ts

export * from './models';

export * from './src/app/modules/my-custom-module/my-custom-module.module';
export * from './src/app/modules/my-custom-module/components/index';

主要项目代码:

import {MyCustomModule} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library/models'; // does not works

用途: 为终端开发人员简化和划分 UI 库 API。

我相信,我遗漏了一些关于映射 webpack 模块解析的东西,因为 VS Code 识别 import,智能感知工作,甚至 Ctrl + Click 导航到正确的文件,但 webpack 编译失败。

Git Issue

我能够使用 Seconday End Points 实现所需的 API 模式。

学分:Alan Agius at Git Issue