在 Angular 2 中使用 http 调用进行路由

Routing with http calls in Angular 2

我正在寻找在 Angular 中的组件之间进行路由的最佳方式 2. 在我的应用程序中,我通过提交表单逐页浏览:

在每一步后端都可以 return 一个错误,我们要么返回上一页,要么显示一个错误页面(致命错误)。

我看到两个简单的选项来执行 ajax 调用:

  1. 组件 A 仅显示表单并将输入参数转发给组件 B。组件 B 运行 ajax 调用并显示结果。
  2. OR 组件A 运行 ajax 使用他的输入参数调用并将结果转发给组件B 进行显示。如果错误组件 A 重新显示自身。

选项 1 的问题在于,如果出现错误,后端将响应页面 A 业务模型和错误消息。组件 B 必须将结果转发给组件 A,以便可以重新显示页面 A。

方案2的问题是A组件有B组件的部分业务逻辑,不利于组件封装。

我的问题是:是否有好的设计模式可以做到这一点?例如,我应该使用中间组件吗?

感谢您的帮助。

我会将所有 ajax 调用移至父组件并将所有数据也保留在那里,假设表单是独立的。所以工作流程是这样的:

  1. cP(arent) 去 cA

  2. cA - 显示表格,发送数据到 cP

  3. cP - 通过ajax发送A数据,转到cB

  4. cB - 显示表单,将数据发送到 cP

  5. cP -(A 数据出错),通过 ajax 发送 B 数据,转到 cC

  6. cC - 显示表单,通知用户表单 A 有错误,建议用户现在返回,或者完成步骤 C 稍后再执行 A,将数据发送到 cP

  7. cP -(B 数据出现致命错误),不要通过 ajax 发送 C 数据,将数据保存到 localStorage?,告诉用户稍后再试...

    ...等它对用户更友好,您可以根据需要显示 pages/forms。

如果表单相互依赖,我仍然会在父级中保留 ajax 和数据,并显示它们 if/when 服务器响应。但我建议你将它们设计为独立的,或者你可以在用户等待时播放一些 elevator music (;