Angular 6 CLI工作区.如何创建导出服务的库

Bru*_*cox 12 angular-cli angular

背景:

  • 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 {
}
Run Code Online (Sandbox Code Playgroud)

返回错误:

Uncaught Error: Can't export value FormsLibService from FormsLibModule
as it was neither declared nor imported!
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

谢谢.

R. *_*rds 9

This might do the trick for you:

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]
        };
      }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案不起作用。我尝试过这个。但是在 public_api.ts 中导入语句是有效的 (3认同)

小智 6

您可以通过将一些代码添加到public_api.ts中来添加要从库中导出的服务

首先在您的角度应用程序中找到“ projects / nameOfLibProject / src / public_api.ts”,然后添加

export * from './lib/locationOf/your.service';
Run Code Online (Sandbox Code Playgroud)