在Nativescript Raddataform中禁用按钮

在Nativescript Raddataform中禁用按钮,nativescript,nativescript-angular,Nativescript,Nativescript Angular,我正在使用commitMode=“Immediate”,并试图在任何输入无效时禁用保存按钮。 实现这一目标的推荐方法是什么 我知道我可以在组件中使用“手动”模式时设置一个变量,但我找不到任何表示完整Raddataform(或单个属性)有效性变化的事件使用即时验证时。您可以通过侦听验证事件,然后更新模型来完成此操作 从中,添加属性验证的侦听器: <RadDataForm @propertyValidated="onPropertyValidated" ...></RadData

我正在使用commitMode=“Immediate”,并试图在任何输入无效时禁用保存按钮。 实现这一目标的推荐方法是什么


我知道我可以在组件中使用“手动”模式时设置一个变量,但我找不到任何表示完整Raddataform(或单个属性)有效性变化的事件使用即时验证时。

您可以通过侦听验证事件,然后更新模型来完成此操作

从中,添加
属性验证的
侦听器:

<RadDataForm @propertyValidated="onPropertyValidated"  ...></RadDataForm>

在这种情况下,您可能希望跟踪所有验证,或者您可以使用完整的
数据表单。hasvalidateErrors()

您可以通过侦听验证事件,然后更新模型来完成此操作

从中,添加
属性验证的
侦听器:

<RadDataForm @propertyValidated="onPropertyValidated"  ...></RadDataForm>

在这种情况下,您可能希望跟踪所有验证,或者您可以使用完整的
数据表单。hasvalidateErrors()

这是NS Vue解决方案,但在Angular中完全适用

添加一个在每次验证时触发的
@propertyValidated=“onValidateForm”
事件侦听器。然后可以在表单上使用
hasvalidateErrors()
,查看表单是否有效。唯一的诀窍是必须将is包装在
setTimeout()
中,如下所示:

onValidateForm(event) {
    setTimeout(() => {
        this.validated = !event.object.hasValidationErrors();
        console.log("form valid: " + this.validated);
    }, 100);
}

有关完整的解决方案,请参见。

这是NS Vue解决方案,但完全适用于角度

添加一个在每次验证时触发的
@propertyValidated=“onValidateForm”
事件侦听器。然后可以在表单上使用
hasvalidateErrors()
,查看表单是否有效。唯一的诀窍是必须将is包装在
setTimeout()
中,如下所示:

onValidateForm(event) {
    setTimeout(() => {
        this.validated = !event.object.hasValidationErrors();
        console.log("form valid: " + this.validated);
    }, 100);
}

有关完整的解决方案,请参见。

您可以收听
propertyValidated
事件,检查整个表单是否有任何错误(可能使用
.hasvalidateErrors()
),如果有错误,请禁用按钮。这意味着我需要分别在所有属性上添加该事件,对吗?否,这意味着您可以在RadDataForm上使用每当验证属性时触发的事件。这是表单中所有属性的常见事件。好的,这是一个不错的解决方案,谢谢!哼
.hasvalidateErrors()
似乎正在触发
属性验证
,导致堆栈溢出。你知道为什么或者如何绕过它吗?你可以收听
propertyValidated
事件,检查整个表单是否有任何错误(可能使用
.hasvalidateErrors()
),如果有错误,请禁用按钮。这意味着我需要分别在所有属性上添加该事件,对吗?不,这意味着您可以在RadDataForm上使用每当验证属性时触发的事件。这是表单中所有属性的常见事件。好的,这是一个不错的解决方案,谢谢!哼
.hasvalidateErrors()
似乎正在触发
属性验证
,导致堆栈溢出。你知道为什么或者如何避开它吗?