2017-08-10 110 views
1

Im使用Angular4構建前端。 如果用戶提交錯誤表單,則應顯示錯誤消息。Angular 2:FormGroup:如何顯示自定義錯誤消息

此刻,我的錯誤處理是這樣的:

// This code is run when a response from the server is received 
if ('error' in server_response) { 
    for (let key in server_response.error { 
     this.form.controls[key].setErrors({'error': true}); 
     let error_message_from_server = server_response.error[key]; 
    } 
} 

如何顯示HTML錯誤:接收到錯誤時

<span class="error" *ngIf="field.invalid">Error: {{field.errors.error}} <br></span> 

目前的field.invalid爲真,但field.errors.error中有一個空字符串。

問題:如何設置field.errors.error消息?此消息應爲error_message_from_server

中的字符串請注意,通過在HTML代碼中使用if語句解決此問題不是一種選擇。潛在的錯誤數量在幾百。

+0

你想在服務器響應後顯示消息或在表單提交之前?你需要在文本框附近顯示什麼東西或者任何提醒都很好? –

+0

抱歉不清楚。我更新了我的問題!應該在服務器響應後顯示錯誤。從服務器接收錯誤消息。 – Vingtoft

回答

1

this.form.controls[key].setErrors({'error': true}); //關鍵是錯誤值布爾不是

嘗試設置一個字符串類型值

for (let key in server_response.error { 
    this.form.controls[key].setErrors({'error': erver_response.error[key]}); 
//Calling `setErrors` will also update the validity of the parent control. 
} 
0

對於錯誤字符串可用在HTML水平,你必須聲明它在你的組件級:

error_message_from_server: string;

然後,從服務器的響應,您將消息發送到字符串:

// This code is run when a response from the server is received 
if ('error' in server_response) { 
    for (let key in server_response.error { 
     this.form.controls[key].setErrors({'error': true}); 
     error_message_from_server = server_response.error[key]; 
    } 
} 

然後將字符串綁定到你的元素:

<span class="error" *ngIf="field.invalid">Error: {{error_message_from_server}} <br></span>

+0

我有100多個輸入字段,他們都可以從服務器收到潛在的錯誤消息。創建100多個公共字符串聽起來像是一個非常糟糕的解決方案,特別是當Angular已經提供了一個'field.errors.error'時。我需要調查這是否是唯一的解決方案。感謝您的輸入。 – Vingtoft

+0

沒問題,我不知道你有100多個輸入。 – BogdanC

相關問題