在 AngularJS 1.3+ 表单中显示和隐藏服务器端错误
Show and hide server-side errors in AngularJS 1.3+ forms
我在最近的应用程序中使用 Angular 框架和 Angular Material 控件。我正在为以下问题寻找一个好的解决方案:
向用户显示带有名为 nickname
的输入字段的表单 form
。用户选择昵称并提交表单后,服务器会检查昵称是否已被使用。在这种情况下,它 returns 给 Angular 客户端一个错误。
为了向用户显示适当的错误,代码随后调用 form.nickname.$setValidity('nicknameTaken', true)
。新的 ngMessages
模块用于向用户显示错误。此外 form.$isInvalid
用于禁用表单控件以防止用户重新提交无效的昵称。
我现在的问题如下:我希望在用户再次开始编辑表单域时自动删除错误 nicknameTaken
。这样做的好方法是什么?当涉及到此类服务器端验证错误时,是否有预定义的路线可供选择? (请注意,我不要求异步验证,因为我只想在实际提交表单时联系我的服务器。)
我会改为编写一个普通的验证器指令。像
<input blacklist="takenNickNames" .../>
该指令将简单地向输入添加一个验证器,如果模型值包含在给定的 takenNickNames
数组中,则该验证器将使输入无效(如果不存在则有效)。
takenNickNames
数组最初为空。当提交表单并返回错误时,控制器会将无效的昵称添加到数组中。
因此,每次用户输入内容时,都会触发验证器,并根据存储在数组中的昵称来设置字段是否有效。
这里是working example.
我在最近的应用程序中使用 Angular 框架和 Angular Material 控件。我正在为以下问题寻找一个好的解决方案:
向用户显示带有名为 nickname
的输入字段的表单 form
。用户选择昵称并提交表单后,服务器会检查昵称是否已被使用。在这种情况下,它 returns 给 Angular 客户端一个错误。
为了向用户显示适当的错误,代码随后调用 form.nickname.$setValidity('nicknameTaken', true)
。新的 ngMessages
模块用于向用户显示错误。此外 form.$isInvalid
用于禁用表单控件以防止用户重新提交无效的昵称。
我现在的问题如下:我希望在用户再次开始编辑表单域时自动删除错误 nicknameTaken
。这样做的好方法是什么?当涉及到此类服务器端验证错误时,是否有预定义的路线可供选择? (请注意,我不要求异步验证,因为我只想在实际提交表单时联系我的服务器。)
我会改为编写一个普通的验证器指令。像
<input blacklist="takenNickNames" .../>
该指令将简单地向输入添加一个验证器,如果模型值包含在给定的 takenNickNames
数组中,则该验证器将使输入无效(如果不存在则有效)。
takenNickNames
数组最初为空。当提交表单并返回错误时,控制器会将无效的昵称添加到数组中。
因此,每次用户输入内容时,都会触发验证器,并根据存储在数组中的昵称来设置字段是否有效。
这里是working example.