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实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
Jan 26 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
微信小程序网络请求封装示例
Jul 24 Javascript
TypeScript中的方法重载详解
Apr 12 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
JS实现导航栏楼层特效
Jan 01 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
Python中几个比较常见的名词解释
2015/07/04 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
python实现一个猜拳游戏
2020/04/05 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
大学生应聘推荐信范文
2013/11/19 职场文书
委托书模板
2014/04/04 职场文书
婚假请假条怎么写
2014/04/10 职场文书
2014年外联部工作总结
2014/11/17 职场文书
领导干部考核评语
2015/01/04 职场文书
保护校园环境倡议书
2015/04/28 职场文书
Vue深入理解插槽slot的使用
2022/08/05 Vue.js