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()
注入它们。在您的情况下,您可以通过阅读 contacts
或 customers
.
的路由参数来执行此操作
此外,根据您的实施,您可以考虑将表单作为一个单独的组件并通过 @Input
装饰器传入 customer
或 contact
。
我构建了一个表单,它具有一个人的 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()
注入它们。在您的情况下,您可以通过阅读 contacts
或 customers
.
此外,根据您的实施,您可以考虑将表单作为一个单独的组件并通过 @Input
装饰器传入 customer
或 contact
。