@Injectable的语义(提供在:"根")?



只是想确保我理解@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.

相关内容

  • 没有找到相关文章

最新更新