简单的例子,但到目前为止还没有找到答案。
在尝试手动注入NgControl时从angular v4开始:

this.injector.get(NgControl);


皮棉开始抱怨:

get is deprecated: from v4.0.0 use Type<T> or InjectionToken<T>


如何使用进样器正确注入?

最佳答案

(使用Angular 8)
这通过而没有TSLint错误:

this.injector.get<NgControl>(NgControl as Type<NgControl>);


但是,通过构造函数有一个更优雅的解决方案。

    constructor(@Self() @Optional() public ngControl: NgControl) {
      if(this.ngControl) {
        this.ngControl.valueAccessor = this;
      }
    }


但是您需要记住,这是NG_VALUE_ACCESSOR的内联(更优雅)替换-您将同时使用这两个函数会收到周期性依赖项错误。

   providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => FieldComponent),
      multi: true
    }

09-16 11:52