问题描述
我有一个在共享组件中使用的自定义指令。指令接受一个字符串类型的输入。当我在模板中使用它时,我得到一个错误,它不是输入的已知属性。由于该指令是共享的,因此我在共享模块中对其进行了声明。任何人都可以让我知道如何解决此问题。
@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 (将#修改为@)