Angular中多个组件的通用提供程序配置?

时间:2019-04-15 12:19:52

标签: angular

我正在创建自定义表单元素(组件)以使用反应式表单。最后,我在一个通用类中实现ControlValueAccessor,并在我作为表单元素制作的组件中扩展了该通用类。我在组件文件的@Component装饰器中的config下面添加了该文件。

  providers: [{
    provide: NG_VALIDATORS,
    useExisting: forwardRef(() => <COMPONENT_CLASS_NAME>),
    multi: true
  }, {
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => <COMPONENT_CLASS_NAME>),
    multi: true
  }]

CommonClass

import {ControlValueAccessor} from "@angular/forms";

export class CustomFormElement implements ControlValueAccessor {
  _value;

  get value() {
    return this._value;
  }

  set value(value) {
    this._value = value;
    this.onChange(value);
    this.onTouched();
  }

  registerOnChange(fn: any): void {
    this.onChange = fn;
  }

  registerOnTouched(fn: any): void {
    this.onTouched = fn;
  }

  writeValue(value: any): void {
    if (value !== undefined) {
      this._value = value;
    }
  }

  onChange(val) {

  }

  onTouched() {

  }
}

扩展为以下两个部分

export class Component1 extends CustomFormElement
export class Component2 extends CustomFormElement

一切正常。但是我不想在Component1和Component2中都添加上面提到的providers配置。有没有办法使两种配置都通用?

0 个答案:

没有答案