背景:
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!
有人能指出我正确的方向吗?
谢谢。
答案 0 :(得分:3)
这可能适合你:
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]
};
}
}
答案 1 :(得分:3)
您可以通过将一些代码添加到public_api.ts来添加要从库中导出的服务
首先在您的角度应用程序中找到“ projects / nameOfLibProject / src / public_api.ts”,然后添加
export * from './lib/locationOf/your.service';
答案 2 :(得分:0)
好像您错过了将服务添加到模块上的providers数组中一样。 喜欢
@NgModule({
imports: [],
providers: [FormsLibService],
declarations: [FormsLibComponent, FormsLibService],
exports: [FormsLibComponent, FormsLibService],
})
答案 3 :(得分:0)
我知道我参加晚会很晚,但是为了将来参考: 我的解决方法是:
ng build FormsLibModule
从“ forms-lib”导入{FormsLibModule};
注意:VS Code将此导入显示为错误,但没关系,因为它可以正常编译。不要尝试将自动导入用于此导入,因为未在其中列出。
答案 4 :(得分:0)
考虑到在角度8下创建库,我们需要在public_api.ts中导出服务
export * from './lib/components/spinner/spinner.service';
答案 5 :(得分:0)
我的问题是: 在导入语句中,我选择了(Webstorm)自动完成功能给我的东西,大致相当于
import {FormsLibModule} from 'forms-lib/lib/forms-lib.module';
相反,我只需要使用库名:
import {FormsLibModule} from 'forms-lib';
(注意:我有一个包含该库以及对其进行测试的应用程序的工作区)