简单的例子,但到目前为止还没有找到答案。
在尝试手动注入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
}