Angular动态组件
一、主页面:
app.component.html:
<button (click)="load();">动态</button>
2<div #domRoom><!--动态组件加载到这个div里--></div>
app.component.ts:
 import {Component, ViewContainerRef, ViewChild, ComponentFactoryResolver} from '@angular/core';
 import {DynamicdialogComponent} from "./dynamicdialog/dynamicdialog.component";
 @Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
 })
 export class AppComponent {
   @ViewChild('domRoom', {read: ViewContainerRef}) domRoom: ViewContainerRef;
   constructor(public cfr: ComponentFactoryResolver,){}
   load(){
     let com = this.cfr.resolveComponentFactory(DynamicdialogComponent);
     let comref = this.domRoom.createComponent(com);
     let data = [];
     comref.instance.sourseData  = data;  //创建动态组件传输数据
     comref.instance.myWorkOver.subscribe((msg) => { // 订阅组件传出事件 判断执行销毁组件操作
       if (msg) {
         this.domRoom.clear();
       }
     });
   }
 }
二、动态组件:
dynamicdialog.component.html:
<p-dialog header="动态组件" [(visible)]="display" modal="modal" width="850" [responsive]="true" (onHide)="dialogHide()">
666
</p-dialog>
dynamicdialog.component.ts:
 import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';
 @Component({
   selector: 'app-dynamicdialog',
   templateUrl: './dynamicdialog.component.html',
   styleUrls: ['./dynamicdialog.component.css']
 })
 export class DynamicdialogComponent implements OnInit {
   @Input() sourseData: any; // 外部传入的数据源
   @Output() myWorkOver: EventEmitter<boolean> = new EventEmitter<boolean>(); // 用于向外传事件(根据实际业务,也可以改为EventEmitter<any>)
   public display: boolean = true; // 默认显示dialog
   constructor() { }
   ngOnInit() {
   }
   dialogHide() { // dialog hide调用 默认认为当dialog 关闭了 就销毁组件 实际业务按需求综合考虑
     this.myWorkOver.emit(true); // 向外传播事件 并将消息体传播出去
   }
 }
app.module.ts:
 import { BrowserModule } from '@angular/platform-browser';
 import { NgModule } from '@angular/core';
 import { DataTableModule } from 'primengcn/primeng';
 import { AppRoutingModule } from './app-routing.module';
 import {DialogModule} from 'primengcn/components/dialog/dialog';
 import { AppComponent } from './app.component';
 import { DynamicdialogComponent } from './dynamicdialog/dynamicdialog.component';
 import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
 @NgModule({
   declarations: [
     AppComponent,
     DynamicdialogComponent
   ],
   imports: [
     BrowserModule,
     AppRoutingModule,
     DialogModule,
     DataTableModule,
     BrowserAnimationsModule
   ],
   entryComponents: [
     DynamicdialogComponent
   ],
   providers: [],
   bootstrap: [AppComponent]
 })
 export class AppModule { }
Angular动态组件的更多相关文章
- Angular 动态组件
		Angular 动态组件 实现步骤 Directive HostComponent 动态组件 AdService 配置AppModule 需要了解的概念 Directive 我们需要一个Directi ... 
- angular 动态组件类型
		出处:https://github.com/Penggggg/angular-component-practices 组件类型1:纯函数功能,而没有视图部分,即Factory(类似于$http) pr ... 
- Angular 学习笔记 (动态组件 & Material Overlay & Dialog 分析)
		更新: 2019-11-24 dialog vs router link refer : https://stackoverflow.com/questions/51821766/angular-m ... 
- Angular动态创建组件之Portals
		这篇文章主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的知识点,如:Angular多级依赖注入.ViewContainerRef,Por ... 
- angular2 学习笔记 ( Dynamic Component 动态组件)
		更新 2018-02-07 详细讲一下 TemplateRef 和 ViewContainerRef 的插入 refer : https://segmentfault.com/a/1190000008 ... 
- vuejs动态组件给子组件传递数据
		vuejs动态组件给子组件传递数据 通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component> ... 
- C++ 类的动态组件化技术
		序言: N年前,我们曾在软件开发上出现了这样的困惑,用VC开发COM组件过于复杂,用VB开发COM组件发现效率低,而且不能实现面向对象的很多特性,例如,继承,多态等.更况且如何快速封装利用历史遗留的大 ... 
- Hibernate学习---第五节:普通组件和动态组件
		一.普通组件映射配置 1.创建组件类,代码如下: package learn.hibernate.bean; /** * 组件类 */ public class Phones { private St ... 
- vue2入坑随记(二) -- 自定义动态组件
		学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.e ... 
随机推荐
- Luogu3214 HNOI2011 卡农 组合、DP
			传送门 火题qwq 我们需要求的是满足元素个数为\(M\).元素取值范围为\([1,2^n-1]\).元素异或和为\(0\)的集合的数量. 首先我们可以计算元素有序的方案数(即计算满足这些条件的序列的 ... 
- 获取SpringMVC中所有RequestMapping映射URL信息
			SpringMVC启动的时候,会把接口信息收集在RequestMappingHandlerMapping中,故可以通过这个类,拿到全部的映射信息,Sample代码段如下: @Autowired pri ... 
- 尚硅谷MySQL基础学习笔记
			目录 写在前面 MySQL引入 数据库的好处 数据库的相关概念 数据库存储数据的特点 MySQL服务的启动和停止 MySQL服务端的登录和退出 MySQL的常用命令 MySQL语法规范 DQL(Dat ... 
- Python学习日记(二十三) 类命名空间和组合
			类命名空间 在一个类中它的函数(方法)属于动态属性,直接定义的变量属于静态属性 首先先定义一个类,并在这个类里面加入静态变量.属性等然后将一个对象实例化 class Fighter: #定义一个战机的 ... 
- centos7 编译安装redis
			1.下载redis源码包 cd /opt wget http://download.redis.io/releases/redis-4.0.12.tar.gz 2.解压源码包 tar zxf redi ... 
- 使用Arduino开发板制作交流电压表
			在本文中,我们将使用Arduino开发板制作一个交流电压测量装置,测量我们家中交流电源的电压.我们将在Arduino IDE的串行监视器上打印输出该电压,并在万用表上显示出来. 制作数字电压表比模拟电 ... 
- virtual box 6.0 扩容原有磁盘空间 ubuntu18.04
			virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ... 
- P1072 Hankson 的趣味题[数论]
			题目描述 Hanks 博士是 BT(Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解了 ... 
- discuz论坛门户资讯入库接口【原创】
			最近想打造一个社区门户站点,所以写了这个入库接口,可以对接数据入库. <?php /* * Discuz x3.2 门户免登陆发布接口 * 2018-08-10 * Copyright 68xi ... 
- 区别和认识.net四个判等方法
			概要 本方介绍.net如何判断两个对象是否相等 .Net有四个判等函数 1)Object.ReferenceEquals 2)Object.Equals 3)对象实例的Equals 4)==操作符 这 ... 
