Как преобразовать строку в объект в машинописи - PullRequest
0 голосов
/ 05 сентября 2018

Я делаю динамические формы в Angular 6. Для этого я посылаю JSON из бэкэнда. PFB JSON


[
 {
  "controlType": "input",
  "label": "Test1",
  "key": "some1",
  "value": "This input is pre-populated",
  "syncValidators": "Validators.required"
 }
]

Я делаю формы в Typescript следующим образом. ПФБ код

this.dataList = JSON.parse(event.body); //Contains the JSON sent from backend
const formContent: any = {};

this.dataList.forEach(data => { 
      formContent[data.key] = new FormControl(data.value ,data.syncValidators));
 });

this.exampleForm = new FormGroup(formContent);

Я получаю проблему в => data.syncValidators, так как она рассматривается как строка. Но это должен быть Validators.required.

Как я могу сделать преобразование, чтобы «data.syncValidators» воспринимался как метод, а не как строка?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете использовать троичный

        this.dataList.forEach(data => { 
              formContent[data.key] = (data.syncValidators == "Validators.required" ? 
                  new FormControl(data.value ,Validators.required)) : new FormControl(data.value)));
        });
0 голосов
/ 05 сентября 2018

создать фабрику для достижения этого:

validatorFactory(validatorName:string){
     switch(validatorName){
          case "Validators.required" :
               return Validators.required;
          // add other validators like max , min , ....
          default : return null;
     }
}

и используйте его так:

    this.dataList.forEach(data => { 
      formContent[data.key] = new FormControl(data.value ,validatorFactory(data.syncValidators)));
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...