[英]How to use the @Injectable providedIn root in angular 5 with getting
[英]The semantics of @Injectable(providedIn: 'root')?
只是想确保我理解@Injectable(providedIn: 'root')
的语义。 在 Angular 6 之前,如果我们从 NPM 导入一个包含服务的模块,我们将在我们的应用程序模块中声明该模块,以便整个应用程序都可以访问该服务。 像这样的东西:
import { SomeNPModule } from '@ngx/SomeNPModule';
@NgModule({
imports: [
BrowserModule,
SomeNPModule
]
})
export class AppModule {}
现在我们可以注入模块提供的SomeService
因为我们已经导入了模块。 使用 Angular 6 不需要将SomeNPModule
导入到AppModule
中,因为我们在服务本身上使用@Injectable(providedIn: 'root
),并且当注释运行时,它会自动使服务在root
注入容器中可用?
所以我们有了答案,但我认为它是部分完整的,如果我们想要配置服务,这通常是通过服务模块上的forRoot
方法完成的……就像通过Router
完成的那样。 所以假设我们不想配置服务,我们需要做的就是注入它,但是如果我们想要一个配置的服务,我们需要遵循Router
模式。 如果我在评论中犯了任何错误,请纠正我。
当您编写@Injectable(providedIn: 'root')
这意味着整个应用程序的服务处于单一状态,您可以在应用程序的任何位置注入。
当您只想为一个确切的模块制作服务单例时,您需要将您的模块作为参数分配给providedIn
- @Injectable(providedIn: MyModule)
使用@Injectable
装饰服务所需的唯一其他操作是导入它并构造函数注入它,就是这样。 无需在AppModule
导入它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.