Пожалуйста, помогите с тестированием пользовательского валидатора. Две недели, пытаясь решить эту проблему, ничего не происходит.
в директиве html
<div>
<input type="text" class="value-input" [(ngModel)]="element.value" name = "RegisterValue" #ValueReg = "ngModel" [viewRegister] = 'viewChoiceDispleyReg' [viewType] = 'displeyView' valueName>
</div>
import { AbstractControl, ValidatorFn, FormControl } from '@angular/forms';
import { Directive, ElementRef, Input } from '@angular/core';
import { NG_VALIDATORS, Validator } from '@angular/forms';
@Directive({
selector: '[valueName]',
providers: [
{ provide: NG_VALIDATORS, useExisting: valueValidator, multi: true }
]
})
export class valueValidator implements Validator{
validator: ValidatorFn;
@Input('viewType') viewType;
@Input('viewRegister') viewRegister;
constructor(private elementRef: ElementRef) {
this.validator = this.validateValueFactory();
}
validate(c: FormControl) {
return this.validator(c);
}
// validation function
validateValueFactory() : ValidatorFn {
return (c: AbstractControl) => {
console.log("validate: " + c.value + ", view type: " + this.viewType);
let isValid = c.value === '0';
if(isValid) {
return null;
} else {
return {
valueName: {
valid: false
}
};
}
}
}
}
Я изучил много материала о стекопотоке на другие сайты. Основная проблема в том, что я не знаю, как создать компонент для тестирования валидатора. В этом тесте компонент должен добавить требуемый валидатор для свойств (@viewType, @viewRegister). Как написать модульные тесты для этого валидатора?