在 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.