转载: Angular4动态创建组件--根据组件名称动态创建出来组件
动态创建组件
-
说说场景先,比我写了一些组件,这此组件内容都很少,弹出的对话框也许只有一行数据,也有可能是一个表单等,或都一些多选的,单选的选项等。
-
网上有好多,动态创建组件的Demo,都不是很满意,愿意就是要动态创建组件的时候,传入的你即将要创建的组件对象进去,然后把这个放到页面里显示出来。这算什么动态创建呀,我就想传一个组件的名字,然后就能把他创建出来。
-
之前写过C#动态创建类,都是给一个类的名称,然后通过反射将类创建出来,然后能过接口过滤转成接口调用方法或, invoke 某个方法等进行操作。像这种才是我想要的效果。
-
给个名称,然后就把这个组件创建出来,通过输入一些参数对创建出来的组件进行赋值,输出一些参数(主就输出是事件了,比较点击组件上的按钮触发相应的事件等)。
说了这么多,先来个例子吧。
上面那张图很简单就是一个输入文本的一个弹框。
下面这个就有点复杂了,有数据传入,事件绑定等
主了调用起来方便,我把这些都封装成了一个方法:三个参数
- 要创建的组件名称
- 要传入组件的参数
- 组件输出的事件
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
由于我动态创建的组件都是以弹框形式出来,所以我把动态创建的步骤放到了,弹框组件里。
创建Dialog.ts,文件,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
就不把代码张贴里了,查看全部代码可以点击这里展示出几个方法吧,具体详情可能点击