Angular 库中的路径

Paths in an Angular library

我看到一些地方说你可以在你的库中使用 tsconfig 路径。 我试图设置它,但我的项目无法编译。 我的服务的完整路径是 example-project/projects/example-project/src/lib/_core/services 所以我已将其添加到我的 tsconfig.ts 文件(在 foot 文件夹中):

"paths": {
  "@core": ["src/app/_core"],
  "@configs": ["src/app/_core/configs"],
  "@models": ["src/app/_core/models"],
  "@services": ["src/app/_core/services"],
  "@validators": ["src/app/_core/validators"]
}

但是如果我尝试从我的库中引用服务,它不会编译:

这是完整的class:

import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { CloudinaryModule } from '@cloudinary/angular-5.x';
import * as Cloudinary from 'cloudinary-core';

import { IMAGES_CONFIG, ImagesConfig } from '@configs';
import { ResponsiveImageComponent } from './responsive-image.component';

@NgModule({
  declarations: [ResponsiveImageComponent],
  exports: [ResponsiveImageComponent, CloudinaryModule],
  imports: [CommonModule, CloudinaryModule],
})
export class ImagesModule {
  static forRoot(config: ImagesConfig): ModuleWithProviders {
    return {
      ngModule: ImagesModule,
      providers: [
        { provide: IMAGES_CONFIG, useValue: config },
        ...CloudinaryModule.forRoot(Cloudinary, {
          cloud_name: config.cloudName,
        }).providers,
      ],
    };
  }
}

有人知道我做错了什么吗?

我想通了。两件事。

忘记在目录下添加index.ts文件,例如:

export * from './core-config.token';
export * from './core-config';
export * from './images-config.token';
export * from './images-config';

我通过查看带有路径的普通应用程序得到的第二件事。 baseUrltsconfig 设置为“./”所以路径必须从那里开始,所以我改变了我的 tsconfig到这个:

"paths": {
  "@core": ["projects/example-project/src/app/_core"],
  "@configs": ["projects/example-project/src/app/_core/configs"],
  "@models": ["projects/example-project/src/app/_core/models"],
  "@services": ["projects/example-project/src/app/_core/services"],
  "@validators": [
    "projects/example-project/src/app/_core/validators"
  ]
}

现在可以使用了。