You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular不使用依赖注入需传参?DI时参数来源疑问

为什么Angular依赖注入TranslateService不用传参数?

你手动用new TranslateService()报错缺参数,是因为TranslateService的构造函数本身就需要9个依赖项(比如TranslateLoader、TranslateParser、LocaleService这类),直接new的时候没传这些必填参数,自然会触发报错。

而用构造函数注入的时候,Angular的**依赖注入容器(Injector)**会帮你搞定所有参数:

  • 首先,Angular的DI容器会提前管理好TranslateService所需的所有依赖实例——这些依赖要么是Angular框架自带、已经默认注册到DI系统里的服务,要么是你通过TranslateModule.forRoot()这类配置,把TranslateService相关的依赖都注册进了容器。
  • 当你在组件或服务的构造函数里声明private translateService: TranslateService时,DI容器会自动查找并创建(或者复用已存在的)TranslateService需要的那9个依赖实例,把它们逐一传给TranslateService的构造函数,最后把组装好的完整TranslateService实例注入给你,所以你不用自己传任何参数。

简单说就是:DI容器帮你做了“找依赖、传参数、造实例”的脏活,你只需要声明要什么就行。

内容的提问来源于stack exchange,提问作者Emin TATLI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 08:02:07