gpt4 book ai didi

Angular 服务在 VS forRoot 中提供

转载 作者:太空狗 更新时间:2023-10-29 17:17:15 27 4
gpt4 key购买 nike

我想知道这两段代码是否等价。

我可以使用 providedIn 得到与 forRoot 相同的结果吗?

@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() { }
}

对比

@Injectable()
export class MyService {
constructor() { }
}

@NgModule({
imports: []
})
export class MyModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: MyModule,
providers: [
MyService
]
};
}
}

@NgModule({
imports: [
MyModule.forRoot()
],
bootstrap: [AppComponent]
})
export class AppModule { }

[我仍然会保留我的 MyModule,以便与 providedId 单例服务一起使用]

最佳答案

使用 providedInproviders[]:

  1. providedIn 是 Angular 进行 DI 的新方式。 providedIn是从Angular 6开始引入的

  2. 正式名称是“Tree-shakeable providers”——不再是模块提供其所有服务,现在是服务本身声明应该在何处提供它

  3. 使用 providedIn: 'root' 完全不需要导入库模块,我们可以简单地注入(inject)所需的服务,它就可以正常工作

关于Angular 服务在 VS forRoot 中提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53251849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com