Angular 内嵌视图、宿主视图
解析视图:
内嵌视图
- 连接到模板的嵌入视图,在组件模板元素中添加模板(DOM元素、DOM元素组)宿主视图
- 连接到组件的嵌入视图,在组件元素中添加别的组件
使用类说明:
ElementRef
- 单个HTML元素;用于获取DOM元素;TemplateRef
- 一组HTML元素;可以用来创建ViewRef类型的视图(TemplateRef元素实例.createEmbeddedView(null);),也可以作为TemplateRef对象插入到ViewContainerRef实例中;ViewContainerRef
- 视图容器,任何DOM元素都可以作为视图容器使用; 它可以用来创建和管理内嵌视图;
创建视图:
1. 创建内嵌视图
- HTML - parent.component.html
<!-- 视图插入的位置 -->
<ng-container #tempContainer></ng-container><!-- 视图模板 -->
<ng-template #tempElem><h1>TempElem-title</h1><p>TempElem-intro</p>
</ng-template>
- TS - parent.component.ts
export class ParentComponent implements AfterViewInit {constructor() {}@ViewChild('tempContainer', {read: ViewContainerRef})private tempContainer: ViewContainerRef;@ViewChild('tempElem')private tempElem: TemplateRef<any>;ngAfterViewInit() {// 创建内嵌视图 - 以下任意一种方法都可以this.tempContainer.insert(this.tempElem.createEmbeddedView(null));// this.tempContainer.createEmbeddedView(this.tempElem);}
}
效果如下:
- 说明:
- 在 Angular 中,我们可以通过 ViewChild 装饰器来获取视图中定义的模板元素,然后利用
ViewContainerRef对象
的 createEmbeddedView() /insert()方法,创建内嵌视图。 - ViewContainerRef对象的insert方法需要一个ViewRef类型的视图
viewContainerRef实例.createEmbeddedView(TemplateRef实例);;viewContainerRef实例(ViewRef实例)
2. 创建宿主视图
第一步: 创建动态组件,并且在组件所在模块的declarations和entryComponents中声明组件;
import {HomeComponent} from './home.component';
import {ListComponent} from './list.component';
import {DetailComponent} from './detail.component';const declare = [HomeComponent,ListComponent,DetailComponent
];@NgModule({declarations: [...declare],entryComponents: [...declare]})
第二步: 定义创建动态组件所需的内容
- HTML
// 组件切换链接
<a href="javascript:;" (click)="load('home')">home</a>
<a href="javascript:;" (click)="load('list')">list</a>
<a href="javascript:;" (click)="load('detail')">detail</a>// 动态组件容器
<div #dynamic></div>
- TS
import {HomeComponent} from './home.component';
import {ListComponent} from './list.component';
import {DetailComponent} from './detail.component';export class BackendComponent implements OnInit {// 定义动态组件对象cmpData = {'home': HomeComponent, 'list': ListComponent, 'detail': DetailComponent};// 定义动态组件容器@ViewChild('dynamic', { read: ViewContainerRef }) dmRoom: ViewContainerRef;constructor(private cfr: ComponentFactoryResolver ) { }ngOnInit() {// 默认加载的动态组件this.loadComponent(this.cmpData['home']);}// 定义动态切换组件方法loadComponent(comName): void { // 动态加载组件const com = this.cfr.resolveComponentFactory(comName); this.dmRoom.clear(); // 清空视图this.currentCmp = this.dmRoom.createComponent(com); }// 定义点击事件方法load(name: string) {this.loadComponent(this.cmpData[name]);} }
转载于:https://www.cnblogs.com/zero-zm/p/9860253.html
Angular 内嵌视图、宿主视图相关推荐
- 【数据库】oracle数据库----内嵌视图
关系视图是数据库对象,创建关系视图实际是对查询定义可重用的需求.但有时,查询定义并不会被重用.此时,创建关系视图便不再适宜------过多的关系视图势必增加数据库的维护成本.oracle提供了内嵌视图 ...
- Angular之ngx-permissions的控制视图访问
Angular之ngx-permissions的控制视图访问 案例 demo https://stackblitz.com/edit/ngx-permissions-iwexsb Permission ...
- MySQL内置函数存储过程视图JDBC
MySQL存储过程&视图&JDBC-笔记 回顾 能够使用内连接进行多表查询 SELECT * FROM 表1 , 表2 WHERE 条件; SELECT * FROM 表1 INNER ...
- Django 2.1.3 视图层 内置CBV通用视图
内置的基于类的通用视图 1. 扩展通用视图 2. 对象的通用视图 3. 制作"友好"的模板上下文 4. 添加额外的上下文 5. 查看对象的子集 6. 动态过滤 7. 执行额外的工作 ...
- Razor Page Library:开发独立通用RPL(内嵌wwwroot资源文件夹)
Demo路径:https://github.com/yanshengjie/RPL.Demo 1. Introduction Razor Page Library 是ASP.NET Core 2.1引 ...
- Java实现内嵌浏览器
创建项目 ----> 导入需要的jar ----> 代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...
- 标量函数,多语句表值函数,内嵌表值函数
标量函数返回一个标量(单值)结果,可返回Timestamp,text,Ntext,Image,Table,Cursor 多语句表值函数,返回一条或多条Transact-sql语句建立的表,可在sele ...
- MFC基于多文档框架(对话框内嵌office控件(word文档))
office系列以简便.功能强大的特色发展为当今世界上范围最广.用户最多的办公软件,同时也深受码农的喜欢-. MFC项目中嵌入office系列软件也是随处可见的,最早接触内嵌office软件是在几 ...
- 采用Cloudera-Manager安装CDH时,采用内嵌数据库各数据库用户密码的保存位置
一.场景描述 在采用Cloudera-Manager安装cdh时,通常使用内嵌的PostgreSQL数据库. Cloudera-Manager除了保存CDH集群的配置元数据的scm数据库外,还为Act ...
最新文章
- 爱因斯坦牛顿达尔文投胎中国后
- 1126 Eulerian Path (25 分)【难度: 一般 / 欧拉图的判定】
- C#反射使用方法过程及步骤
- ionic移动开发流程api
- Google Analytics 搜索引擎来源
- 正确的python变量名_在Python,如何将变量名作为字符串?_others_酷徒编程知识库...
- [Vue.js] 深入 -- 案例 - 购物车
- 我免费发布的东西,你拿去卖钱,我不平衡
- Java 开源博客 Solo 1.6.0 发布 - 新后台
- 为PHP添加swoole异步并行扩展
- 22_多易教育之《yiee数据运营系统》用户画像-消费行为性别预测篇
- win7安装SP1补丁
- hdoj2602 0/1背包 动态规划 模版题( Java版)
- 2022年全球市场雷达目标模拟器总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 2022高等代数笔记整理
- Keil--视力保护--背景设置
- tailwindcss使用教程
- java webservice jws,1 基于jws的webservice项目
- jovi语音助手安装包_Jovi语音助手安装包下载-vivoJovi语音助手v3.1.1.0 最新版-腾牛安卓网...
- Back-off restarting failed container报错
热门文章
- 想学习UI设计,培训的话需要多少钱?
- 软件测试行业发展前景怎么样?
- java团队名字_作为一名Java工程师,我在DevOps团队都经历了什么
- 杨云 中科院计算机所,专家人才库数据----中国科学院计算技术研究所
- java就业班学什么呀_传智播客JAVA就业班学习心得
- mac mysql ngram_mac 下 sphinx + mysql + php 实现全文搜索(xampp)(3)sphinx 的配置项解析...
- asp.net mysql helper_asp.net使用SQLHelper操作数据库
- 计算机演示文稿教学实例课件,计算机图形学的教学演示文稿ppt课件.ppt
- PSIM软件学习---03 电路的创建与仿真
- STM8学习笔记---NTC热敏电阻的使用