以编程方式更改RadDataForm Switch编辑器的状态

时间:2019-06-03 09:09:43

标签: angular nativescript

我正在创建一个新的angular + nativescript应用程序,该应用程序依赖于RadDataForm插件来创建表单。我创建了一个将初始化编辑器并且可以正常工作的源对象。在编辑器中,我有一个开关,当状态改变时,我想用它来执行编程操作。如何在代码中访问开关的状态?我正在使用json文件来自定义编辑器。

我尝试添加开关“ checkedChange”事件及其处理程序,如nativescript ui小部件中所述,但它不起作用。

这些是我的“问题”对象的编辑器

  public isResolved?: boolean;
  public reasonForNotResolving?: string;

这是我在RadDataForm中注册源对象的方式:

首先,我使用ngOnInit()方法初始化我的Object:

  this.createIssue = new Issue(
      false,
      'Development Env Was Not Set',
    );

然后使用“ createIssue”属性作为源对象,例如:

      <RadDataForm
        #issuesLogForm
        tkExampleTitle
        tkToggleNavButton
        [source]="createIssue"
        [metadata]="issueLogMeta"
      >
      </RadDataForm>

我的json文件提供的元数据如下:

{
    "isReadOnly": false,
    "commitMode": "Manual",
    "validationMode": "Manual",
    "propertyAnnotations":
    [
{
            "name": "isResolved",
            "displayName": "issue is Resolved :",
            "index": 5,
            "editor": "Switch"
        },
        {
            "name": "reasonForNotResolving",
            "displayName": "Reason For Not Resolving :",
            "index": 6,
            "editor": "MultilineText"
        }, 
]
}

我希望获得我的开关编辑器的状态,并在我的代码中以编程方式对其进行更改。这样,当选中“问题已解决”的开关编辑器时,应禁用“ reasonForNotResolving”的编辑器,反之亦然。

1 个答案:

答案 0 :(得分:1)

使用propertyCommitted事件来监视数据表单上的任何更改。您可以通过比较事件对象中的propertyName属性来过滤特定属性。

onPropertyCommitted(args) {
    if (args.propertyName === "isResolved") {
        // createIssue.isResolved should have the latest value here
    }
}