Простая реализация пользовательского ввода Angular Reactive Form - PullRequest
0 голосов
/ 25 октября 2019

У меня ДЕЙСТВИТЕЛЬНО простая 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сын до проверки, и если он не может преобразовать текст, просто верните пустой массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...