这篇文章主要介绍angular如何根据组件名称动态创建组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、理解angular组件组件是一种特殊的指令,使用更简单的配置项来构建基于组
这篇文章主要介绍angular如何根据组件名称动态创建组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、理解angular组件
组件是一种特殊的指令,使用更简单的配置项来构建基于组件的应用程序架构,这样他能简单地写app,通过类似的WEB Component 或者angular2的样式。web Component 是一个规范。马上就要成为标准。
应用组件的优点:
比普通指令配置还简单
提供更好的默认设置和最好的实践
对基于组建的应用架构更优化。
对angular2的升级更平滑。
不用组建的情况:
对那些在 compile或者pre-link阶段要执行操作的指令,组件不能用,因为无法到达那个阶段。
如果你想定义指令的 priority,terminal,multi-element,也不能用。
组件只能通过元素标签触发,其他的只能用命令。
二、动态创建组件
说说场景先,比我写了一些组件,这此组件内容都很少,弹出的对话框也许只有一行数据,也有可能是一个表单等,或都一些多选的,单选的选项等。
网上有好多,动态创建组件的Demo,都不是很满意,愿意就是要动态创建组件的时候,传入的你即将要创建的组件对象进去,然后把这个放到页面里显示出来。这算什么动态创建呀,我就想传一个组件的名字,然后就能把他创建出来。
之前写过C#动态创建类,都是给一个类的名称,然后通过反射将类创建出来,然后能过接口过滤转成接口调用方法或, invoke 某个方法等进行操作。像这种才是我想要的效果。
给个名称,然后就把这个组件创建出来,通过输入一些参数对创建出来的组件进行赋值,输出一些参数(主就输出是事件了,比较点击组件上的按钮触发相应的事件等)。
说了这么多,先来个例子吧。
上面那张图很简单就是一个输入文本的一个弹框。
下面这个就有点复杂了,有数据传入,事件绑定等
主了调用起来方便,我把这些都封装成了一个方法:三个参数
要创建的组件名称
要传入组件的参数
组件输出的事件
Utility.$ShowDialoGComponent('ComponentName', {
Params1,Params2...
}, {
onEventName1:()=>{},
...
});
由于我动态创建的组件都是以弹框形式出来,所以我把动态创建的步骤放到了,弹框组件里。
创建Dialog.ts,文件,
@Component({
selector: 'xtn-mode-dialog',
templateUrl: './Dialog.html',
styleUrls: ['./Dialog.sCSS'],
animations: [ // 弹框的添加一个动画效果,由小到大显示,关闭时候,由大小到最后不见了。
trigger('TriggerState', [
state('inactive', style({ transfORM: 'scale(0.1)' })),
state('active', style({ transform: 'scale(1)' })),
transition('inactive => active', animate('150ms ease-in')),
transition('active => inactive', animate('150ms ease-out')),
])
]
})
export class XtnDialog implements OnInit, OnDestroy, OnChanges, AfterContentChecked, AfterContentInit {
// 依赖注入动态创建组件的工厂类
constructor(private resolver: ComponentFactoryResolver) {
}
// 内容检查,主要是判断是打开还是关闭弹框。
ngAfterContentChecked(): void {}
// 销毁操作
nGonDestroy(): void {}
// 这里就是动态创建的组件地方法
LoadComponent(self:any){}
ngAfterContentInit(): void {}
....
}
以上是“Angular如何根据组件名称动态创建组件”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!
--结束END--
本文标题: Angular如何根据组件名称动态创建组件
本文链接: https://www.lsjlt.com/news/72780.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0