Angular 6 CLI Workspaces.Как создать библиотеку, которая экспортирует сервисы - PullRequest
0 голосов
/ 25 мая 2018

Справочная информация:

  • В Angular CLI 6 введена концепция рабочих пространств.
  • Рабочая область может содержать несколько проектов.
  • Конфигурация рабочей области и проектов находится в файле angular.json в корневой папке рабочей области.
  • Каждый проект может быть приложением или библиотекой.
  • CLI может сгенерировать проект, который является библиотекой, с помощью команды, подобной этой: ng generate library forms-lib
  • Эта команда создает проект типа «библиотека» с компонентом и службой и экспортирует компонент.

Вопрос:

Я безуспешно пытаюсь создать библиотеку и сделать доступными в ней сервисы для использования в приложениях, которые в них нуждаются.

Этот код не работает:

import { NgModule } from '@angular/core';
import { FormsLibComponent } from './forms-lib.component'; 
import { FormsLibService } from './forms-lib.service';

@NgModule({
    imports: [],
    declarations: [FormsLibComponent],
    exports: [FormsLibComponent, FormsLibService],
})
export class FormsLibModule {
}

Возвращает ошибку:

Uncaught Error: Can't export value FormsLibService from FormsLibModule
as it was neither declared nor imported!

Может ли кто-нибудь указать мне правильное направление?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 12 августа 2019

Я знаю, что опаздываю на вечеринку, но для будущих ссылок: мое решение разрешено с помощью:

  1. ng build FormsLibModule
  2. Добавьте модуль библиотеки в целевой модуль иследующие компоненты:

import {FormsLibModule} из 'forms-lib';

Примечание. Код VS показывает этот импорт как ошибку, но нене имеет значения, потому что он хорошо компилируется.Не пытайтесь использовать автоматический импорт для этого импорта, потому что он там не указан.

0 голосов
/ 26 сентября 2018

похоже, что вы пропустили добавление своей услуги в массиве провайдеров на модуле.как

@NgModule({
    imports: [],
    providers: [FormsLibService],
    declarations: [FormsLibComponent, FormsLibService],
    exports: [FormsLibComponent, FormsLibService],
})
0 голосов
/ 16 февраля 2019

вы можете добавить сервисы, которые вы хотите экспортировать из вашей библиотеки, добавив некоторый код в public_api.ts

сначала найдите «projects / nameOfLibProject / src / public_api.ts» внутри вашего углового приложения, затем добавьте

export * from './lib/locationOf/your.service';
0 голосов
/ 25 мая 2018

Это может помочь вам:

import { NgModule, ModuleWithProviders } from '@angular/core';
import { FormsLibComponent } from './forms-lib.component'; 
import { FormsLibService } from './forms-lib.service';

@NgModule({
    declarations: [FormsLibComponent],
    exports: [FormsLibComponent],
})
export class FormsLibModule {
    static forRoot(): ModuleWithProviders {
        return {
          ngModule: FormsLibModule,
          providers: [FormsLibService]
        };
      }
}
...