Angular2 - 如何在多个页面上重用相同的模型驱动表单

Angular2 - how to reuse the same model-drive form on multiple pages

我构建了一个表单,它具有一个人的 4 个属性:

firstName, lastName, email, mobile

该表格可以在应用程序的许多地方使用。我见过的所有教程都展示了可重用组件,但只是作为相关父组件的子组件。例如:

/customers <- renders a list of customers, select one and
/customers/1 <- renders a customer detail, with a customer form

但如果我还有:

/contacts <- renders a list of contacts
/contacts/1 <- renders a detail, with a contact form

但是Customer和Contact form是完全一样的,有四个相同的fields/controls(但是明显会save/update到不同的api)。

是否可以创建一个可以订阅服务的通用 'person' 表单 - 当表单放在客户页面时,注入客户服务,当放在联系页面时,注入联系服务.

然后表单可以将更改的数据保存回正确的服务。

我还没有看到任何此类表单重用的示例。这可能吗?

如果我没有正确理解您的问题,那么您可以提出类似的问题:我可以有条件地注入服务吗?答案是肯定的。您可以通过多种方式做到这一点。

一种方法是像 THIS 一样扩展组件。但这对我来说有点难看。

我过去解决这个问题的方法是将这两个服务注入到您的组件中,但有条件地 subscribe() 注入它们。在您的情况下,您可以通过阅读 contactscustomers.

的路由参数来执行此操作

此外,根据您的实施,您可以考虑将表单作为一个单独的组件并通过 @Input 装饰器传入 customercontact