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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
js中substring和substr的详细介绍与用法
Aug 29 Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
js图片轮播插件的封装
Jul 21 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
Jul 13 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
小程序实现录音上传功能
Nov 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
php中static静态变量的使用方法详解
2010/06/04 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
python实现汉诺塔递归算法经典案例
2021/03/01 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python如何生成网页验证码
2018/07/28 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
护理专业自荐信范文
2015/03/06 职场文书
个人承诺书格式范文
2015/04/29 职场文书
写给同事的离职感言
2015/08/04 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Python机器学习之PCA降维算法详解
2021/05/19 Python
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
Python之基础函数案例详解
2021/08/30 Python