[英]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.