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

Angular 在功能模块中声明服务的最佳方式是什么?,angular,Angular,服务的默认设置似乎是: @Injectable( { providedIn: 'root' } ) 其目的是将服务置于“根目录”中。。。这是一个特殊的字符串,在本例中指的是app.module或您命名的根模块。您可以将其更改为模块名,但这意味着您需要导入模块,这似乎总是导致循环依赖项错误()。您可以在“providers”数组中以老式的方式声明它,但这似乎对我不起作用。这让我回到“root”,但似乎存在一个声明顺序问题,即服务在子组件中未声明。此时,此用例是否有一个单一路径,还

服务的默认设置似乎是:

@Injectable(
    {
    providedIn: 'root'
}
)

其目的是将服务置于“根目录”中。。。这是一个特殊的字符串,在本例中指的是app.module或您命名的根模块。您可以将其更改为模块名,但这意味着您需要导入模块,这似乎总是导致循环依赖项错误()。您可以在“providers”数组中以老式的方式声明它,但这似乎对我不起作用。这让我回到“root”,但似乎存在一个声明顺序问题,即服务在子组件中未声明。此时,此用例是否有一个单一路径,还是仍在决定中?

如果该服务只应在功能模块内使用,您也可以在模块中提供该服务

比如说

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

@Injectable({
    providedIn: MyModule;
})

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

您是否可以准备一份说明子组件中未实例化服务问题的报告?您的模块还可以定义内部使用而外部不提供的服务。比如说,一个“私人”服务不能在你的模块外使用