我们在这里与我的一个朋友讨论了一个任务,其中"如果点击表单的提交按钮会发生什么"? 要求是首先使用 ngrx 存储中的数据验证该表单,然后将该数据提交到服务器。
。所以有两种方法可以做到这一点:
-
使用将在调度"SUBMIT_ACTION"时触发的 ngrx/效果。它将获取数据,然后通过服务调用API
-
使用该组件 - 它将"获取(1("配置,验证一切正常,然后通过服务调用 API
据我所知 - 在这种情况下使用效果是很常见的事情。你觉得怎么样?
这个问题可能没有正确的答案。 就个人而言,我不喜欢将验证推入商店。我更喜欢使用 angular 的内部验证工具来验证我的表单。 对于我当前的项目,我们使用反应式表单来验证输入,然后使这些表单与商店保持同步。 (此外,我们正在同步有效、已触摸、待处理、错误等属性(
一个优点是,您基本上可以从任何地方提交表单,或者将它们分成更小的部分并合并它们,然后再将它们发送到服务器。 而且,您可以编写可重用的角度组件,这些组件与底层存储体系结构无关,并且可以轻松重构。若要将窗体绑定到存储区,可以使用服务或抽象类。
简短示例:
- 反应式表单验证输入
- 表单数据与商店同步(包括它是否有效、挂起、错误(
- UI 元素(提交按钮/表单禁用/微调器(链接到有效/挂起属性
- 调度"SUBMIT_ACTION"并将状态更改为挂起=真
- 效果正在等待答案并发送"SUBMIT_ACTION_ERROR"或"SUBMIT_ACTION_SUCCESS"> 显示
- 错误或显示成功通知
我认为这个问题没有正确的答案,这完全取决于,作为开发人员,您的工作是选择正确的解决方案。
就个人而言,如果它是一个简单的形式,我会做:
验证- 表单是否正确填写(客户端验证(
- 使用(可序列化的(表单对象调度保存操作,这不是 Angular 的形式,而只是一个 JavaScript 对象
- 在效果中侦听此操作并调用服务
- 如果出现问题:显示消息(通知、烤面包机、小吃店等(
- 如果一切正常:关闭表单