在功能模块中声明服务的最佳方法是什么?

时间:2018-09-25 06:24:26

标签: angular

服务的默认设置似乎是:

@Injectable(
    {
    providedIn: 'root'
}
)

旨在将服务放置在“ root”中……这是一个特殊的字符串,在本例中是指app.module或您已命名为root模块的任何名称。您可以将其更改为模块名称,但这意味着您需要导入模块,并且这似乎总是导致循环依赖性错误(https://github.com/angular/angular-cli/issues/10170)。您可以在“ providers”数组中将其声明为老式方式,但这似乎对我不起作用。这使我回到“ root”,但似乎存在一个声明顺序问题,其中在子组件中未实例化该服务。此时,此用例是否只有一条路径,还是仍在确定中?

1 个答案:

答案 0 :(得分:2)

如果仅在功能模块内部使用服务,则也可以在模块中提供服务

实例

import { MyModule } from ' ./my.module';

@Injectable({
    providedIn: MyModule;
})

在“根”目录中提供该服务使该服务可用于整个应用程序的组件/服务。