首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ElementRef & TemplateRef & ViewContainerRef

今天在做ng项目,看着前人代码有 viewChild() 等关键字。...新手有点疑惑,索性查查资料总结一下和ng相关几个和DOM相关几个概念 ElementRef 由于ng是跨平台为了减少视图层和渲染层耦合也为了让ng更适应多平台,ng帮我们封装了ElementRef...,我们可以通过ElementRef拿到native元素(在浏览器中也就是我们常说DOM元素) 下面我们看一段代码 import { Component, ElementRef, AfterViewInit...template 模板元素,通过 TemplateRef 实例,我们可以方便创建内嵌视图(Embedded Views),且可以轻松地访问到通过 ElementRef 封装后 nativeElement...需要注意是组件视图中 template 模板元素,经过渲染后会被替换成 comment 元素。 ViewContainerRef:用于表示一个视图容器,可添加一个或多个视图。

1.2K20

Angular 动态创建组件

我们自定义组件最终是一个实际 DOM 元素,因此如果我们需要在页面中插入该元素,我们就需要考虑在哪里放置该元素。 创建组件容器 在 Angular 中放置组件地方称为容器。...接下来,我们将在根组件中创建一个模板元素,另外我们使用模板变量语法,声明一个模板变量。...接下来模板元素 将会作为我们组件容器,具体示例如下: import { Component } from '@angular/core'; @Component({...装饰器来获取视图中模板元素,如果没有指定第二个查询参数,则默认返回 ElementRef 实例,但这个示例中,我们需要获取 ViewContainerRef 实例。...根据以上需求,更新后代码如下: import { Component, ViewChild, ViewContainerRef } from '@angular/core'; @Component(

3.6K10

【译】Angular中,向子组件传值5种方式

本文,让我们跟随 accompanying demo app  示例来阐述下面5个技术: @Input来响应变化值 @ViewChild来设置属性 在services中使用BehaviorSubjects...ViewChild 使用ViewChild,你可以操作子组件内属性以及方法。在动态插入组件或元素时,你可以通过子组件类或模板引用变量方式,来直接引用子组件,这技术就会得心应手。...要使用ViewChild,需要传入子组件类或是模板引用变量,这样在父组件内轻易得到属性指向子组件。...这个声明只会查询组件内第一个PriceComponent实例: @ViewChild(PriceComponent) priceComponent; 如果你模板中使用引用变量: </app-price-component 下面的声明能让你创建一个它引用 @ViewChild('price') priceComponent;

2K20

Angular ElementRef 简介

通过 ElementRef 我们就可以封装不同平台下视图层中 native 元素 (在浏览器环境中,native 元素通常是指 DOM 元素),最后借助于 Angular 提供强大依赖注入特性,我们就可以轻松地访问到...我们先来介绍一下整体需求,我们想在页面成功渲染后,获取页面中 div 元素,并改变该 div 元素背景颜色。...首先我们要先获取 div 元素,在文中 “ElementRef 作用” 部分,我们已经提到可以利用 Angular 提供强大依赖注入特性,获取封装后 native 元素。...没有抛出异常,我们可以推断 this.elementRef.nativeElement 这个对象是存在,但却找不到它元素,那应该是在调用构造函数时候,my-app 元素元素还未创建。...不过我们后面也会有专门文章,详细分析一下 Angular 组件生命周期。成功取到 div 元素,就剩下事情就好办了,直接通过 style 对象设置元素背景颜色。

1.6K60

高级 Angular 组件模式 (5)

目标 在视图模板内,获取一个指令引用。 实现 模板引用变量是获取某个元素、组件或者指令引用一种方式,这个引用可以在当前视图模板中任何地方使用。...当一个组件绑定于一个元素时,那么声明模板引用变量将会被解析为当前元素上所绑定组件,比如: // app.component.html </toggle-on...在类内部获取模板引用变量所指向引用是通过使用ViewChild装饰器完成,比如上述文章中第二个例子: @Component({ selector: 'my-app', template:...` `, }) export class AppComponent { @ViewChild('myDiv') myDiv: ElementRef...Note: 在类中获取模板引用变量所指向引用时,请格外注意你期望获取引用类型,在例子中,我们期望获取html元素,因此这里引用类型是ElementRef,如果是指令或者组件,则分别要对应其类型Type

61920

反思录:Angular实现svg和png图片下载

概述 技巧 svg和png图片转换和下载 解决chrome data url too large下载问题 解决@ViewChild未及时刷新问题 原则 永远从问题最近地方开始分析 理解下面这些内容前提是具备一些...假意需求 当我说“假意需求”时候,其实是将解决方案视作眼下需求,目的是方便理解。在这个项目中,我们需要把页面上已经存在svg元素转换成可下载svg和png链接。...接下来要解决就是如何在component中引用页面上svg元素并将它转化成png格式图片。 svg和png图片转换和下载 1....获取元素 Angular中提供一种叫做ViewChild注解,可以帮助我们引用到页面中svg元素,此处就是#template....解决@ViewChild未及时刷新问题 @ViewChild取得页面元素可能不是最新,AngularChange detection需要时间完成刷新,所以有很短时间延迟[2]。

2.6K40

【Angular教程】-内容投影u002F@ContentChildu002F@ViewChild

投影子元素 使用ng-container来包裹子元素,减少不必要dom层,类似vue中template 容器组件这样写 编号4 <ng-content select="question...有条件<em>的</em>内容投影 中文网<em>的</em>描述: 如果你<em>的</em>组件需要_有条件地_渲染内容或多次渲染内容,则应配置该组件以接受一个 ng-template <em>元素</em>,其中包含要有条件渲染<em>的</em>内容。...在这种情况下,不建议使用 ng-content <em>元素</em>,因为只要组件<em>的</em>使用者提供了内容,即使该组件从未定义 ng-content <em>元素</em>或该 ng-content <em>元素</em>位于 ngIf 语句<em>的</em>内部,该内容也总会被初始化...使用 ng-template <em>元素</em>,你可以让组件根据你想要<em>的</em>任何条件显式渲染内容,并可以进行多次渲染。在显式渲染 ng-template <em>元素</em>之前,Angular 不会初始化该<em>元素</em><em>的</em>内容。...@<em>ViewChild</em> & @ViewChildren 使用这两个装饰器来对指接子组件进行操作 使用注解在业务组件中定义子组件 @<em>ViewChild</em>(HelloWorldComp) helloComp

51930

Angular 从入坑到挖坑 - 组件食用指南

因此,这里应该使用模板引用变量方式获取数据信息。 模板引用变量是对模板中 DOM 元素引用,提供了从模块中直接访问元素能力。...="expr">NgIf 结构型指令 当 expr 属性为 true 时,这个元素则会显示在页面上,当属性值为 false 时,则不显示该元素 ngIf 指令并不是通过使用 css 样式来隐藏元素...,当值为 false 时,则这些元素会从 dom 中被销毁,并且所有监听该 dom 元素事件会被取消,当重新显示该元素时,会重新执行初始化过程 与销毁元素不同,对于隐藏元素来说,所有的元素监听事件还会执行监听...4.4.3、父组件获取子组件信息 使用 @ViewChild 装饰器获取 在子组件上定义一个模板引用变量 父组件内容: 1、使用 @ViewChild 装饰器获取子组件数据...引用,然后使用 @ViewChild 装饰器来接收子组件 dom 信息,从而获取到子组件数据或方法 // 引入 ViewChild import { Component, OnInit,

15.7K30
领券