У меня ДЕЙСТВИТЕЛЬНО простая FormGroup, 3 текстовых ввода, один из которых должен быть JSON (я написал специальный валидатор для него), и я хочу сделать форму, чтобы получить массив вместо строки json
Я хотел бы сделать ввод JSON в другом компоненте, сохраняя при этом ту же форму, но форма должна получить уже проанализированный json (который должен быть массивом) вместо строки, прежде чем будет применена проверка, потому что в противном случае я 'Я должен анализировать его для каждой проверки и даже для дальнейшего использования, которое является очень трудоемким. Я знаю, что должен использовать ControValueAccessor, но я просто не могу понять, как это сделать
(JsonValidator проверяет, является ли это строкой json, ShapeValidatorпроверяет, является ли он массивом и имеют ли объекты внутри него определенную форму, оба должны проанализировать json)
public form = new FormGroup({
jsonGraphData: new FormControl('', [JsonValidator, JsonShapeValidator]),
xAxis: new FormControl('', Validators.required),
yAxis: new FormControl('', Validators.required)
});
что я хотел бы иметь
public form = new FormGroup({
jsonGraphData: new FormControl('', ArrayShapeValidator),
xAxis: new FormControl('', Validators.required),
yAxis: new FormControl('', Validators.required)
});
и вшаблон использует что-то вроде
<custom-textarea formControlName="jsonGraphData"></custom-textarea>
tl; dr: пользовательский компонент ввода должен преобразовывать ввод текста в разобранном jсын до проверки, и если он не может преобразовать текст, просто верните пустой массив