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插件开发方法(附完整实例及下载)
Apr 01 Javascript
用js实现控件的隐藏及style.visibility的使用
Jun 14 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
vue-cli3配置与跨域处理方法
Aug 17 Javascript
js+canvas实现简单扫雷小游戏
Jan 22 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python如何查看安装了的模块
2020/06/23 Python
Python 如何实现访问者模式
2020/07/28 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
自考自我鉴定范文
2013/10/30 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
2014年绿化工作总结
2014/12/09 职场文书
合理化建议书
2015/02/04 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
车间安全生产管理制度
2015/08/06 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
mysql部分操作
2021/04/05 MySQL
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis