无法绑定到“ dimensionValidator”,因为它不是“ input”的已知属性

问题描述

我有一个在共享组件中使用的自定义指令。指令接受一个字符串类型的输入。当我在模板中使用它时,我得到一个错误,它不是输入的已知属性。由于该指令是共享的,因此我在共享模块中对其进行了声明。任何人都可以让我知道如何解决此问题。


@Directive({
  selector: '[dimensionValidator]',providers: [
    { multi: true,useExisting: forwardRef(() => DimensionValidator),provide: NG_VALIDATORS }
  ]
})
export class DimensionValidator implements Validator {
 @Input('dimensionValidator') selectedCountryCode: string;
  public packageTypeEnum = PackageDetailsEnums;
  isInternational: boolean;
  constructor() {
  }

  validate(formController: AbstractControl) {
    return Object.assign(
      this._validateDimensions(formController)
    )
  }


  private _validateDimensions (formController: AbstractControl) {
    if (formController.touched || formController.dirty) {
      //Check if the destination address is international

        if (this.selectedCountryCode == GlobalConstants.COUNTRYCODE.CANADA || this.selectedCountryCode == GlobalConstants.COUNTRYCODE.USA) {
          this.isInternational = false;
        } else {
          this.isInternational = true;
        }
      if (formController.parent.get('units').value == this.packageTypeEnum.metric) {  // If the selected unit is mertic
        // Domestic/USA valid value ( 0.01 - 200 / cm) --- International valid value ( 0.01 - 150 / cm)
        if ((this.isInternational ? Number(formController.value) >=  GlobalConstants.DIRECTIVES.FIELD_MAXVAL_MET_INT : Number(formController.value) >=  GlobalConstants.DIRECTIVES.FIELD_MAXVAL_MET) || Number(formController.value) < GlobalConstants.DIRECTIVES.INPUT_FIELD_MIN_VAL) {
            return {invalidValue: true};
        } else { // Check Girth ( Length + (width + height) * 2) if the values are valid
          return this.calculateGirthForValidValues(formController,GlobalConstants.DIRECTIVES.MAX_GIRTH_MET);
        }
      } else { // selected unit is imperial
        // Domestic/USA valid value ( 0.01-78.7 inch) --- International valid value ( 0.01 - 59 inch)
        if ((this.isInternational ? Number(formController.value) >=  GlobalConstants.DIRECTIVES.FIELD_MAXVAL_IMP_INT : Number(formController.value) >=  GlobalConstants.DIRECTIVES.FIELD_MAXVAL_IMP) || Number(formController.value) < GlobalConstants.DIRECTIVES.INPUT_FIELD_MIN_VAL) {
          return {invalidValue: true};
        } else { // Check Girth ( Length + (width + height) * 2) if the values are valid
          return this.calculateGirthForValidValues(formController,GlobalConstants.DIRECTIVES.MAX_GIRTH_IMP);
        }
      }
    } else {
      return {};
    }
  }
}

这是HTML模板

<input type="text" id="BoxHeight" [dimensionValidator]="selectedCountryCode"/>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)