Angular 当我将自定义PropertyValidator添加到我的儿子元数据验证器数组时,RadDataForm失败,并出现数组索引插入错误 我正在将NativeScript 6与 棱角分明 表单对象的元数据在TypeScript组件中定义为对象,该对象由组件模板文件中的RadDataForm元素引用 如果我只指定RadDataForm内置验证器,那么一切都会按预期工作 有很多文档覆盖了这一领域,但我没有找到一个示例来显示使用它的son元数据;我想我在这里做错了什么 xml示例似乎只是引用自定义验证器的类名并指定任何参数。文件暗示儿子也会以同样的方式工作 使用元数据中的TestValidator(自定义验证器),我会遇到以下错误: 控制台错误[本机代码]:错误:**-[\uu NSArrayM insertObject:atIndex:]:对象不能为零 如果我从元数据中删除它,一切都会按预期进行 我发现了一些不那么优雅的作品;在RadDataForm上使用(propertyValidate)=“dfPropertyValidate($event)”验证处理程序和(tap)=“onTap()”标记。这些都是文档化的,看起来像我期望的那样工作,但是确实需要将验证逻辑从其他表单元数据中分离出来

Angular 当我将自定义PropertyValidator添加到我的儿子元数据验证器数组时,RadDataForm失败,并出现数组索引插入错误 我正在将NativeScript 6与 棱角分明 表单对象的元数据在TypeScript组件中定义为对象,该对象由组件模板文件中的RadDataForm元素引用 如果我只指定RadDataForm内置验证器,那么一切都会按预期工作 有很多文档覆盖了这一领域,但我没有找到一个示例来显示使用它的son元数据;我想我在这里做错了什么 xml示例似乎只是引用自定义验证器的类名并指定任何参数。文件暗示儿子也会以同样的方式工作 使用元数据中的TestValidator(自定义验证器),我会遇到以下错误: 控制台错误[本机代码]:错误:**-[\uu NSArrayM insertObject:atIndex:]:对象不能为零 如果我从元数据中删除它,一切都会按预期进行 我发现了一些不那么优雅的作品;在RadDataForm上使用(propertyValidate)=“dfPropertyValidate($event)”验证处理程序和(tap)=“onTap()”标记。这些都是文档化的,看起来像我期望的那样工作,但是确实需要将验证逻辑从其他表单元数据中分离出来,angular,nativescript,Angular,Nativescript,我做错了什么 顺便说一句,我是瞎子,所以不能确定我对这篇文章的格式是否如我预期的那样。请让我知道,如果它是难以阅读。。。谢谢 提前感谢您提供的任何线索 模板代码: 我没有找到一个简单的方法来做这件事,不得不玩一些本地对象。您必须等待编辑器更新事件,检查属性名称是否匹配,然后添加自定义验证器 onEditorUpdate(event) { if (event.propertyName === "email") { if (isAndroid) {

我做错了什么

顺便说一句,我是瞎子,所以不能确定我对这篇文章的格式是否如我预期的那样。请让我知道,如果它是难以阅读。。。谢谢

提前感谢您提供的任何线索

模板代码:
我没有找到一个简单的方法来做这件事,不得不玩一些本地对象。您必须等待编辑器更新事件,检查属性名称是否匹配,然后添加自定义验证器

    onEditorUpdate(event) {
        if (event.propertyName === "email") {
            if (isAndroid) {
                const validator = event.entityProperty.getValidator();
                if (validator instanceof com.telerik.widget.dataform.engine.PropertyValidatorSet) {
                    validator.add(new TestValidator().android);
                }
            } else {
                const validator = event.entityProperty.validators;
                if (validator instanceof NSMutableArray) {
                    validator.addObject(new TestValidator().ios);
                }
            }
        }
    }

我没有找到一个简单的方法来实现这一点,只能玩一些本地对象。您必须等待编辑器更新事件,检查属性名称是否匹配,然后添加自定义验证器

    onEditorUpdate(event) {
        if (event.propertyName === "email") {
            if (isAndroid) {
                const validator = event.entityProperty.getValidator();
                if (validator instanceof com.telerik.widget.dataform.engine.PropertyValidatorSet) {
                    validator.add(new TestValidator().android);
                }
            } else {
                const validator = event.entityProperty.validators;
                if (validator instanceof NSMutableArray) {
                    validator.addObject(new TestValidator().ios);
                }
            }
        }
    }

我认为文档中对这一部分不是很清楚,您必须注册验证器并将其添加到HTML模板中,或者在创建后将其添加到实体中。否则编译器无法获取自定义类的引用。这可以在我的组件代码中完成吗?你能展示我需要做的更改吗?我想文档中对这一部分不是很清楚,你必须注册验证器并将其添加到HTML模板中,或者在创建后将其添加到实体中。否则编译器无法获取自定义类的引用。这可以在我的组件代码中完成吗?您能显示我需要做的更改吗?此解决方案仍然将我的验证元数据分为两个位置,但我更喜欢此解决方案,因为它将所有验证工作流都置于RadDataForm的控制之下。是的,这只是一种变通方法。您可能仍然会在上提出功能请求,要求在元数据本身中支持自定义验证器。此解决方案仍然将我的验证元数据分为两个位置,但我更喜欢此解决方案,因为它将所有验证工作流保持在RadDataForm的控制之下。是的,这只是一种变通方法。您仍然可以在上提出功能请求,以在元数据本身中支持自定义验证器。
    onEditorUpdate(event) {
        if (event.propertyName === "email") {
            if (isAndroid) {
                const validator = event.entityProperty.getValidator();
                if (validator instanceof com.telerik.widget.dataform.engine.PropertyValidatorSet) {
                    validator.add(new TestValidator().android);
                }
            } else {
                const validator = event.entityProperty.validators;
                if (validator instanceof NSMutableArray) {
                    validator.addObject(new TestValidator().ios);
                }
            }
        }
    }