使用Angular2在页面中导入大量表单组件

使用Angular2在页面中导入大量表单组件,angular,angular2-forms,Angular,Angular2 Forms,我有一个相当大的菜单组件,每个菜单项都有一个不同的表单显示,至少有100个不同的表单,预计会有几百个。现在的问题是,是否可以导入所有表单组件?还有别的办法吗 与此相关的另一件事是,我有一个包含所有子组件有用信息的变量,使用依赖项注入提供它是一个好主意,还是应该通过@Input将它插入所有子组件中?如果您使用路由器加载表单组件,您可以用于延迟加载 @Input如果要将值传递给直接子组件或指令,则绑定非常方便。 如果需要传递给不是直接子级的组件,则服务仍然可以工作,而绑定则不能 我会说,在你的情况下

我有一个相当大的菜单组件,每个菜单项都有一个不同的表单显示,至少有100个不同的表单,预计会有几百个。现在的问题是,是否可以导入所有表单组件?还有别的办法吗


与此相关的另一件事是,我有一个包含所有子组件有用信息的变量,使用依赖项注入提供它是一个好主意,还是应该通过@Input将它插入所有子组件中?

如果您使用路由器加载表单组件,您可以用于延迟加载

@Input
如果要将值传递给直接子组件或指令,则绑定非常方便。
如果需要传递给不是直接子级的组件,则服务仍然可以工作,而绑定则不能

我会说,在你的情况下使用更方便的方法

通过路由器或DynamicComponentLoader添加组件,服务通常更方便


您只需创建一个查找表(一个对象,您可以在其中用一个名称注册所有类型)

{ MyComponent1: MyComponent1, MyComponent1: MyComponent2, ...}

然后使用字符串名称查找类型。Angular正在进行预渲染,我想用这种方式一次加载所有组件会更有效。

表单将深入介绍结构,以便为它们使用路由,这不是一个好主意。使用DynamicComponentLoader,我仍然需要导入,但最大的问题是em是,我必须创建一个非常大的ngSwitch语句来告诉DCL要加载什么类型,除非有什么东西可以将字符串转换为类型……您只需创建一个查找表(一个对象,在该对象中,您使用名称`{MyComponent1:MyComponent1,MyComponent1:MyComponent2,…}注册所有类型。然后只需使用字符串名称查找类型。Angular正在进行预渲染,我想通过这种方式一次加载所有组件会更有效。如果您可以将此添加到您的答案中,并一如既往地感谢您的帮助,那么您随时可以问到angular2相关的问题:)谢谢!我试过了。从好问题中可以学到很多有趣的东西:)