web-dev-qa-db-fra.com

Espaces de travail CLI 6 angulaires. Comment créer une bibliothèque qui exporte des services

Contexte:

  • Angular CLI 6 a introduit le concept d’espaces de travail. 
  • Un espace de travail peut contenir plusieurs projets. 
  • La configuration de l'espace de travail et des projets se trouve dans un fichier 'angular.json' dans le dossier racine de l'espace de travail. 
  • Chaque projet peut être une application ou une bibliothèque. 
  • La CLI peut générer un projet qui est une bibliothèque avec une commande comme celle-ci: ng generate library forms-lib
  • Cette commande crée un projet de type 'Bibliothèque' avec un composant et un service et exporte le composant.

Question:

J'essaie, sans succès, de créer une bibliothèque et de rendre ses services disponibles pour une utilisation dans les applications qui en ont besoin.

Ce code ne fonctionne pas:

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 {
}

Erreur de retour:

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

Quelqu'un peut me diriger dans la bonne direction?

Je vous remercie.

7
Bruce Wilcox

Cela pourrait faire l'affaire pour vous:

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]
        };
      }
}
2
R. Richards

semble que vous avez manqué d’ajouter votre service dans le tableau de fournisseurs sur le module . comme

@NgModule({
    imports: [],
    providers: [FormsLibService],
    declarations: [FormsLibComponent, FormsLibService],
    exports: [FormsLibComponent, FormsLibService],
})
0
Haris

vous pouvez ajouter les services que vous voulez exporter depuis votre bibliothèque en ajoutant du code dans public_api.ts 

d'abord, localisez "projects/nameOfLibProject/src/public_api.ts" à l'intérieur de votre application angulaire, puis ajoutez

export * from './lib/locationOf/your.service';
0
shahidfoy