Angular 4根据组件名称动态创建出组件的方法教程


Posted in Javascript onNovember 01, 2017

一、理解angular组件

组件是一种特殊的指令,使用更简单的配置项来构建基于组件的应用程序架构,这样他能简单地写app,通过类似的web Component 或者angular2的样式。web Component 是一个规范。马上就要成为标准。

应用组件的优点:

  • 比普通指令配置还简单
  • 提供更好的默认设置和最好的实践
  • 对基于组建的应用架构更优化。
  • 对angular2的升级更平滑。

不用组建的情况:

  • 对那些在 compile或者pre-link阶段要执行操作的指令,组件不能用,因为无法到达那个阶段。
  • 如果你想定义指令的 priority,terminal,multi-element,也不能用。
  • 组件只能通过元素标签触发,其他的只能用命令。

二、动态创建组件

  • 说说场景先,比我写了一些组件,这此组件内容都很少,弹出的对话框也许只有一行数据,也有可能是一个表单等,或都一些多选的,单选的选项等。
  • 网上有好多,动态创建组件的Demo,都不是很满意,愿意就是要动态创建组件的时候,传入的你即将要创建的组件对象进去,然后把这个放到页面里显示出来。这算什么动态创建呀,我就想传一个组件的名字,然后就能把他创建出来。
  • 之前写过C#动态创建类,都是给一个类的名称,然后通过反射将类创建出来,然后能过接口过滤转成接口调用方法或, invoke 某个方法等进行操作。像这种才是我想要的效果。
  • 给个名称,然后就把这个组件创建出来,通过输入一些参数对创建出来的组件进行赋值,输出一些参数(主就输出是事件了,比较点击组件上的按钮触发相应的事件等)。

说了这么多,先来个例子吧。

Angular 4根据组件名称动态创建出组件的方法教程

上面那张图很简单就是一个输入文本的一个弹框。

下面这个就有点复杂了,有数据传入,事件绑定等

Angular 4根据组件名称动态创建出组件的方法教程

主了调用起来方便,我把这些都封装成了一个方法:三个参数

  • 要创建的组件名称
  • 要传入组件的参数
  • 组件输出的事件
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 {}
 ....
}

就不把代码张贴里了,查看全部代码可以点击这里展示出几个方法吧,具体详情可能点击

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JQuery EasyUI 对话框的使用方法
Oct 24 Javascript
javascript对象的使用和属性操作示例详解
Mar 02 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
详解Vue.js分发之作用域槽
Jun 13 Javascript
vue elementUI table 自定义表头和行合并的实例代码
May 22 Javascript
JS开发常用工具函数(小结)
Jul 04 Javascript
微信用户访问小程序的登录过程详解
Sep 20 Javascript
浅谈Vue.use到底是什么鬼
Jan 21 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
浅谈Web Storage API的使用
Jun 23 Javascript
js前端导出Excel的方法
Nov 01 #Javascript
JS二分查找算法详解
Nov 01 #Javascript
ES7中利用Await减少回调嵌套的方法详解
Nov 01 #Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 #Javascript
bootstrap Table的一些小操作
Nov 01 #Javascript
react-native fetch的具体使用方法
Nov 01 #Javascript
Vue异步加载about组件
Oct 31 #Javascript
You might like
substr()函数中文版
2006/10/09 PHP
php 分页函数multi() discuz
2009/06/21 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
那些年,我还在学习jquery 学习笔记
2012/03/05 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
一文了解Python并发编程的工程实现方法
2019/05/31 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Python求凸包及多边形面积教程
2020/04/12 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
土建资料员岗位职责
2014/01/04 职场文书
客服专员岗位职责
2014/02/28 职场文书
《画风》教学反思
2014/04/16 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers