Я использую формы Angular 6, Jasmine и Reactive.
Допустим, у меня есть форма, как показано ниже:
const formArray = new FormArray([
new FormGroup({
questionId: '11',
answer: new FormControl('99122284542', CustomValidators.peselVsBirthDateValidator())
}),
new FormGroup({
questionId: '22',
answer: new FormControl('22.12.1999', CustomValidators.peselVsBirthDateValidator())
})
]);
И где-то в peselVsBirthDateValidator
Я хочу получить parent
из control
:
public static peselVsBirthDateValidator(): ValidatorFn {
return (control: FormControl): ValidationErrors | null => {
// ...
const parent = control.parent;
// ...
};
}
Это прекрасно работает при запуске приложения.
Но я бы хотел протестировать этот валидатор, поэтому в моем файле spec
есть:
it('validator test', () => {
const formArray = new FormArray([
new FormGroup({
questionId: '11',
answer: new FormControl('99122284542', CustomValidators.peselVsBirthDateValidator())
}),
new FormGroup({
questionId: '22',
answer: new FormControl('22.12.1999', CustomValidators.peselVsBirthDateValidator())
})
]);
});
И даже если запустить этот тест без какого-либо expect
, я получу:
TypeError: Cannot read property 'value' of undefined
Когда я отлаживаю код - control
выглядит хорошо, точно так же, как FormControl
должен выглядеть (не буду вставлять его здесь, потому что он довольно большой), но control.parent
- это undefined
.
Полагаю, что по какой-то причине жасмин не передает полную ссылку на объект, можно ли как-то принудительно вызвать его?
Или, может быть, есть другой способ справиться с этим?