• 技术文章 >web前端 >js教程

    浅谈Angular中@ViewChild的用法

    青灯夜游青灯夜游2021-07-21 10:49:14转载373
    本篇文章带大家了解一下Angular中@ViewChild,介绍一下@ViewChild的使用方法。

    简单来说

    个人对@ViewChild的理解就是:它是一个指代,可以通过这个指代,得到这个组件或者元素。并且我们可以使用得到的这个组件的值和方法。【相关教程推荐:《angular教程》】

    为了更直观的知道它是做什么,直接上代码

    通过@ViewChild获取子组件,得到子组件的值、调用子组件的方法

    子组件child

    content:'Zita';
    changeChildCon() {
    	this.content = 'Zita1111'
    }

    父组件parent

    html
    <app-child #ChildrenView></app-child>
    
    ts
    import { ViewChild } from '@angular/core';
    @ViewChild('ChildrenView', { static: true }) childrenView: any;  //ChildrenView为子组件中的#后边的值,childrenView是个名称用来指代子组件
    this.childrenView.content   // Zita  获取子组件中的值
    this.childrenView.changeChildCon()  // 执行子组件中的方法
    this.childrenView.content   // Zita1111

    通过@ViewChild获取某个元素

    html

    <figure #parBele>
      我是父元素中的一个标签figure,我可以通过viewchild来获取,并且获取到我之后可以改变我的样式
    </figure>

    ts

    import { ViewChild, ElementRef } from '@angular/core';
    @ViewChild('parBele', { static: true }) eleRef: ElementRef;
    this.eleRef.nativeElement.style.color = 'red';  // 更改获取的dom元素的样式

    那么,通过这段代码,你就会在页面中看到,figure标签中的字体颜色变成了红色
    在这里插入图片描述

    特别提醒

    angular8.0之后一定要加上{ static: true } 这个属性哦,除此外,官方给这个属性的解释说明是:

    元数据属性:
    selector - 用于查询的指令类型或名字。
    read - 从查询到的元素中读取另一个令牌。
    static - True to resolve query results before change detection runs, false to resolve after change detection. Defaults to false.

    对于static,意思就是:如果为true,则在运行更改检测之前解析查询结果,如果为false,则在更改检测之后解析。默认false.

    怎么理解呐?

    主要就在于“更改检测”这个动作的发生节点。
    例如,我们经常使用到的ngIf、ngShow指令,如果子组件中加入了这些指令,而同时static为true。那么,当我们去捕获指代目标时,得到的值将是undefined

    至此,鄙人针对实际项目中经常用到的@ViewChild的理解到此就Over啦…与君共勉

    更多编程相关知识,请访问:编程教学!!

    以上就是浅谈Angular中@ViewChild的用法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:angular @ViewChild
    上一篇:深入了解Nodejs中的buffer缓存区 下一篇:JavaScript返回值是什么
    大前端线上培训班

    相关文章推荐

    • 浅析Angular路由中的懒加载、守卫、动态参数• 浅谈Angular如何使用ng-content进行内容投影• 浅谈Angular中组件样式的工作原理• 浅谈Angular中RxJS如何映射数据操作• 如何利用管道提高Angular应用程序的性能?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网