gpt4 book ai didi

Angular 6 providedin 不起作用 -> StaticInjectorError

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

我尝试在 Angular 中使用“providedin”功能,但收到错误“StaticInjectorError(AppModule)[DashboardComponent -> DashboardService]:”

@Injectable({
providedIn: DashboardModule
})
export class DashboardService {
getContent() {
return 'Dashboard Service works!!!';
}
}

完整演示 https://stackblitz.com/edit/angular-kbkjet谢谢你的努力!

最佳答案

  • 98% 的时间使用 providedIn = 'root'。它将向根应用程序注入(inject)器注册服务,将进行摇树优化,并将可供任何需要它的组件使用。 tree shaking 将确保该服务仅包含在使用它的 bundle 中。
  • 如果只需要在组件及其嵌套的子组件中提供服务,则在组件中使用提供程序数组。 (对于组件级别的服务隔离,或者如果每个组件需要多个服务实例。)
  • 不要在模块中使用 providers 数组(这是旧语法,不再推荐)
  • 如果您想限制对特定延迟加载模块的服务访问,请使用 providedIn='lazymodule'。然后它将需要一个额外的模块来防止循环依赖问题。这提供了模块级别的服务隔离。如果此延迟加载模块之外的应用程序中的任何其他组件尝试引用该服务,则会生成“超出注入(inject)器范围”错误。

有关“附加模块”的更多信息,请参阅:https://www.youtube.com/watch?v=jigR_jBhDMs&feature=youtu.be

示例代码在这里:https://github.com/web-dave/provide-in-test

循环依赖问题的讨论在这里:https://github.com/web-dave/provide-in-test/issues/1

关于Angular 6 providedin 不起作用 -> StaticInjectorError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097327/

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