У меня есть какая-то функция, где я назначаю валидацию динамически
// set validation from sports response.
private static setValidation(sportsItem: SportsFormResponse, sportsForm: FormGroup): void {
const validationTypes: ValidatorFn[] = [];
// if regex pattern got from questionnaire response.
if (sportsItem.validation) {
validationTypes.push(Validators.pattern(sportsItem.validation));
}
// if sportsItem is required true.
if (this.checkBooleanPropertyExistForValidation(sportsItem.isRequired) === true) {
validationTypes.push(Validators.required);
}
if (validationTypes.length > 0) {
sportsForm.controls[sportsItem.questionId]
.setValidators(validationTypes);
}
}
и я получаю ответ, подобный этому
{
"sportsId": 5473,
"label": "FVC",
"answerValue": null,
"answerCode": null,
"sportsTypeId": 9,
"lookupTypeId": null,
"validation": "^(8\\\\.[0-5]|(0\\\\.0[1-9]|0\\\\.[1-9]([0-9]?)|[1-7]\\\\.[0-9]{1,2}|8\\\\.(?:[0-4][0-9]|50)))$",
"validationMessage": "{“Please provide a valid result for the predicted FVC. This should be between 0.01 - 8.50"}",
"sportsCode": "R94",
"helperText": null,
"isReadOnly": false,
"isRequired": true,
"cssClass": null
},
вот что происходит, когда я хардкодирую значение и вставляю эту функцию, затем онаработает отлично
if (sportsItem.validation) {
validationTypes.push(Validators.pattern("^(8\\\\.[0-5]|(0\\\\.0[1-9]|0\\\\.[1-9]([0-9]?)|[1-7]\\\\.[0-9]{1,2}|8\\\\.(?:[0-4][0-9]|50)))$"));
}
but when its being assigned dyncmaiclly, validation doesnt work.
if (sportsItem.validation) {
validationTypes.push(Validators.pattern(sportsItem.validation));
}
Я отладил, что строка (sportsItem.validation) идет отлично.Я не уверен, в чем проблема с динамической вставкой проверки.
Может кто-нибудь дать мне подсказку для этого?