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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
Jul 18 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
js 与 php 通过json数据进行通讯示例
Mar 26 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
JavaScript动态生成二维码图片
Apr 20 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
angular4中关于表单的校验示例
Oct 16 Javascript
Angular4的输入属性与输出属性实例详解
Nov 29 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入门源程序
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
详解Python如何生成词云的方法
2018/06/01 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
策划助理岗位职责
2013/11/18 职场文书
业务员简历自我评价
2014/03/06 职场文书
学习经验交流会主持词
2014/04/01 职场文书
解除劳动合同协议书
2014/04/14 职场文书
厨房管理计划书
2014/04/27 职场文书
大学团日活动总结书
2015/05/11 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技