我试图从模块外部导入服务。
我的设置如下:我有这个Foo模块
@NgModule({
declarations: [
FooComponent
],
exports: [
FooComponent
],
providers:[
FooService
]
});
export class FooModule {}
我在app.module.ts
中导入的
@NgModule({
...
imports: [ FooModule ]
});
...
这很好用。
接下来我要从FooService
内导入app.module.ts
,因此我将行providers: { FooService }
移至app.module.ts
@NgModule({
...
providers: [FooService],
imports: [ FooModule ]
});
...
到目前为止该应用仍然有效。最后一步,我将服务文件复制到foo目录之外,我更改了导入路径,我甚至重新启动了服务器,现在我在浏览器中收到错误
EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: No provider for FooService!
它再也找不到服务了。
当服务文件不在foo目录中时,为什么缺少服务的任何建议?这可以以某种方式修复吗?
答案 0 :(得分:4)
我试过以下解决方案。它为我工作:
Foo模块
@NgModule({
declarations: [
FooComponent
],
exports: [
FooComponent
],
});
export class FooModule {}
<强> app.module.ts 强>
import {Fooservice} from './FooService';
@NgModule({
...
imports: [ FooModule ]
providers: [FooService],
});
...
<强> Foo.component.ts 强>
import { Component } from '@angular/core';
import { FooService } from '../FooService';
@Component({
})
export class FooComponent {
constructor(public fooservice: FooService) {
...
}
}