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为textarea添加maxlength属性的代码
Apr 07 Javascript
jquery ajax修改全局变量示例代码
Nov 08 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
jquery代码实现多选、不同分享功能
Jul 31 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
javascript实现拖拽碰撞检测
Mar 12 Javascript
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
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
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
提取HTML标签
2006/10/09 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Django框架 querySet功能解析
2019/09/04 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
python求绝对值的三种方法小结
2019/12/04 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
简历里的自我评价范文
2014/02/24 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
公司停电通知
2015/04/15 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
Redis 哨兵集群的实现
2021/06/18 Redis
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
索尼ICF-36收音机评测
2022/04/30 无线电