简体   繁体   English

如何在打字稿中将字符串转换为对象

[英]How to convert string to a object in typescript

I am making dynamic forms in Angular 6 . 我正在Angular 6中制作动态表单。 For that i am sending JSON from backend . 为此,我从后端发送JSON。 PFB the json PFB的JSON


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

I am making the forms in Typescript as follows. 我在打字稿中制作表格如下。 PFB the code PFB代码

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);

I am getting the problem in => data.syncValidators , as it is treated as a string . 我在=> data.syncValidators中遇到问题,因为它被视为字符串。 But it needs to be Validators.required . 但是它需要是Validators.required。

How can i make the conversion so that 'data.syncValidators' will be taken as a method not as a string ? 我如何进行转换,以便将'data.syncValidators'视为方法而不是字符串?

create a factory to acheive that : 创建一个工厂以实现以下目标:

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

and use it like this : 并像这样使用它:

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

You can use ternary 您可以使用三元

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM