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

Angular v4手动注入NgControl遇Lint警告:get已废弃,如何正确注入?

在Angular v4中正确注入NgControl以避免Lint警告

嘿,我之前也踩过这个坑!在Angular v4版本里,Injector.get()的调用规则确实做了更新,旧的用法被标记为弃用,所以才会弹出那个Lint警告。咱们直接来解决它:

第一步:确认导入必要依赖

首先确保你已经在组件/指令文件里导入了需要的模块:

import { NgControl, Injector } from '@angular/forms';

第二步:使用Type类型参数调用get方法

Angular v4要求injector.get()的参数必须是**类型对象(Type)**或者InjectionToken<T>,对于NgControl这种Angular内置的表单控件类型,直接传入它的类型本身就可以了。修改后的代码应该是这样:

// 先在构造函数中注入Injector
constructor(private injector: Injector) {}

// 在需要获取NgControl的位置调用
const ngControl = this.injector.get<NgControl>(NgControl);

这里的<NgControl>是泛型声明,用来让TypeScript正确推断返回值的类型,同时完全符合v4版本的注入规范,Lint警告自然就消失了。

额外推荐:更优雅的构造函数注入方式

如果你是在自定义表单控件中使用NgControl,其实还有更简洁的写法——直接在构造函数里注入它,但记得加上@Self()装饰器来避免循环依赖问题:

import { NgControl, Self } from '@angular/forms';

constructor(@Self() public ngControl: NgControl) {
  // 这里可以直接使用ngControl实例了,不需要手动通过Injector获取
}

这种方式更符合Angular依赖注入的最佳实践,代码也更整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:17:15