Пути в библиотеке Angular

Я видел несколько мест, в которых говорится, что вы можете использовать пути tsconfig в своей библиотеке. Я пытался настроить его, но мой проект не компилируется. Полный путь к моим службам: example-project/projects/example-project/src/lib/_core/services, поэтому я добавил его в свой файл tsconfig.ts ( в папке ноги):

"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"]
}

Но если я попытаюсь сослаться на сервис из своей библиотеки, он не скомпилируется:

введите здесь описание изображения

Вот полный класс:

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,
      ],
    };
  }
}

Кто-нибудь знает, что я делаю неправильно?


person r3plica    schedule 03.11.2020    source источник
comment
Сколько модулей в решении? Как их зовут?   -  person JWP    schedule 03.11.2020


Ответы (1)


Я понял это. Две вещи.

Я забыл добавить файл index.ts в каталог, например:

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

И второе, что у меня получилось, посмотрев нормальное приложение с путями. baseUrl в tsconfig имеет значение ./, поэтому путь должен быть оттуда, поэтому я изменил свой 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"
  ]
}

и это работает сейчас.

person r3plica    schedule 03.11.2020