2015-08-22 34 views
0

我在最近的應用程序中使用Angular框架和Angular Material控件。我正在爲以下問題尋找一個好的解決方案:以AngularJS 1.3+形式顯示和隱藏服務器端錯誤

表格form帶有一個名爲nickname的輸入字段向用戶顯示。用戶選擇暱稱並提交表單後,服務器會檢查暱稱是否已被使用。在這種情況下,它會向Angular客戶端返回錯誤。

爲了向用戶顯示適當的錯誤,代碼然後調用form.nickname.$setValidity('nicknameTaken', true)。新的ngMessages模塊用於向用戶顯示錯誤。進一步form.$isInvalid用於禁用表單控件以防止用戶重新提交無效暱稱。

我現在的問題如下:一旦用戶開始再次編輯表單域,我想自動刪除錯誤nicknameTaken。什麼是這樣做的好方法?當涉及到這種服務器端驗證錯誤時,是否有預定義的路線? (請注意,我不是要求異步驗證,因爲我只想在表單實際提交時聯繫我的服務器。)

回答

2

我會寫一個正常的驗證器指令。像

<input blacklist="takenNickNames" .../> 

該指令的東西只會驗證程序添加到輸入,而這驗證,使輸入無效的,如果模型值包含給定takenNickNames陣列內(和有效的,如果它不存在)。

takenNickNames數組最初將爲空。提交表單並返回錯誤時,控制器會將無效的暱稱添加到數組中。

因此,每次用戶輸入內容時,都會觸發驗證器,並根據存儲在數組中的暱稱來設置字段是否有效。

這是working example

+0

聰明的解決方案! – Marc