【发布时间】:2018-02-18 15:39:16
【问题描述】:
如何对多个路由进行 Angular 表单验证? 例如,我有一个大表单,它包含几个部分,如选项卡,我可以随时导航到它们。 我使用生根来进行类似的导航。 例如。我有模板,其中包括大约 5 个选项卡。
当我填写所有输入时,我将数据发送到服务器,服务器会验证我的数据,如果我的数据有错误,服务器会将其发送到前端,如 JSON,其中包含带有此类对象的错误数组
{"field": "一些输入", "message": "一些错误信息"}
我解析这个答案,并通过字段值从表单中搜索表单控件,并添加错误消息。但是对于一个选项卡,我可以做到这一点,因为在某一时刻我只有一个选项卡的活动路线,而且我只有这个选项卡的表单控件,但是我如何在后台加载其他选项卡并获取它们的表单控件,并为他们设置错误信息?
有没有办法解决这个问题?
我试图在互联网上找到答案,但找不到任何具体的答案。我只找到一篇文章http://heidloff.net/article/angular-2-form-redux-multiple-routes有同样的问题,但真的没有其他选择,只有如何使用Redux?
[更新]
我解决了我的问题。我从表单中删除了选项卡路由,并在根表单组件中添加了选项卡的所有组件,早期是
<router-outlet></router-outlet>
并在每个选项卡中添加[hidden]指令,这是重要,如果添加*ngIf,那么我们会遇到与router-outlet相同的问题,因为当 *ngIf 中的条件不成立时,我们将无法访问组件。
我为每个选项卡制作了带有常量的 javascript 类,并将 activeTab 属性添加到根组件表单中,当单击选项卡时我更改了 activeTab,并显示了该选项卡的表单。
通过这种方式,我可以访问所有选项卡组件,当我向服务器发出请求时,服务器返回给我错误的响应,我可以在根表单组件中处理它并应用于子表单组件
【问题讨论】:
标签: angular validation angular2-forms