angular - 动态表单的动态函数
问题描述
我正在从 JSON 对象模型中生成反应形式(类似于https://angular.io/guide/dynamic-form,但要复杂得多)。
简单的例子:
{
"id": "1"
"type":"input"
},
{
"id": "2"
"type":"dropDown"
}
表单的生成工作正常。现在我想实现控件之间的依赖关系。
示例 1:用户删除输入中的数据。应禁用以下所有控件 示例 2:用户在下拉列表中选择一个值。下一个下拉菜单应该使用选定的值,以该值作为参数执行休息服务并显示接收到的数据。...(我至少有 6 种不同的情况)。
问题是我在开发期间没有组件,因为表单是在运行时从 JSON 对象模型生成的。
我的基本想法是在我的 JSON 对象模型中定义一个自定义函数,该函数将在特定事件发生时执行:
{
"id": "1"
"type":"input"
"dependencies": {
"click": "clickFunctionForComponent1(1, 2)"
}
},
{
"id": "2"
"type":"dropDown"
}
“某处”,否则我实现该功能
clickFunctionForComponent1(currentControl otherControl) {
if (currentCuontrol has valid data) otherControl.data = loadDataForOtherControl();
}
你有什么(其他)想法我能做到这一点吗?
解决方案
您可以使用 eval 来调用该方法。我试过这个。
function clickFunctionForComponent1() {
console.log('worked');
}
let data = JSON.parse(`{
"id": "1",
"type": "input",
"dependencies": {
"click": "clickFunctionForComponent1()"
}
}`);
console.log(eval(data.dependencies.click));
或者
你可以试试这个
export class TimerComponent implements OnInit {
constructor() {
}
ngOnInit() {
let data = JSON.parse(`{
"id": "1",
"type": "input",
"dependencies": {
"click": "clickFunctionForComponent1"
}
}`);
console.log(data);
let methodName = data.dependencies.click;
console.log(this[methodName]());
// console.log(eval(data.dependencies.click));
}
clickFunctionForComponent1() {
console.log('work');
}
}
推荐阅读
- hibernate - 如何使用休眠在 ONE to ONE 关系中编写连接
- python - 使用python来自csv的父子json
- python - 当我必须手动运行迭代时,时期在 Doc2Vec 和训练中意味着什么?
- c# - WPF 中的命令绑定无法读取属性值
- .net-core - 如果在 Dot Net Core 上,我们可以通过在 JSON 文件中传递 ignite 配置来启动一个 ignite 节点吗
- angular - 如何按日期对列表进行分组
- python-3.x - 为具有多重继承的类创建方法(Python)
- javascript - 错误处理承诺在 mongoDB 中保存唯一数据 (ValidationError)
- php - PHP转换拉丁介绍希腊字符
- android - 动态功能模块错误:找不到符号变量 mipmap、菜单、颜色等