zoukankan      html  css  js  c++  java
  • Angular @ViewChild,Angular 中的 dom 操作

    Angular 中的 dom 操作(原生 js)

    ngAfterViewInit(){
        var boxDom:any=document.getElementById('box');
        boxDom.style.color='red';
    }

    对变量定义数据类型,防止编译报错

    Angular 中的 dom 操作(ViewChild)

    1. 定义模板(模板引用)
    <div #myattr></div>
    1. @ViewChild定义模板引用变量
    import { Component ,ViewChild,ElementRef} from '@angular/core';
    @ViewChild('myattr',{static:true}) eleRef: ElementRef;
    ngAfterViewInit(){
        let attrEl = this.eleRef.nativeElement;
    }

    myattr要与模板中的 #myattr对应,名字不能出错,eleRef是变量

    父子组件中通过 ViewChild 调用子组件

    1. 调用子组件给子组件定义一个名称
    <app-footer #footerChild></app-footer>
    1. 引入 ViewChild
    import { Component, OnInit ,ViewChild} from '@angular/core';
    1. ViewChild 和刚才的子组件关联起来
    @ViewChild('footerChild',{static:true}) footer;
    1. 调用子组件
    run(){
        this.footer.footerRun();
    }

    完整案例

    1. 模板
    <app-header #header></app-header>
    
    <div #myBox>
       我是一个dom节点
    </div>
    
    <button (click)="getChildRun()">获取子组件的方法</button>
    1. 逻辑定义
    import { Component, OnInit,ViewChild} from '@angular/core';
    
    @Component({
      selector: 'app-news',
      templateUrl: './news.component.html',
      styleUrls: ['./news.component.scss']
    })
    export class NewsComponent implements OnInit {
      //获取dom节点
      @ViewChild('myBox',{static:true}) myBox:any;
      //获取一个组件
      @ViewChild('header',{static:true}) header:any;
      constructor() { }
    
      ngOnInit() {
      }
    
      ngAfterViewInit(): void {    
        console.log(this.myBox.nativeElement);
        this.myBox.nativeElement.style.width='100px';
        this.myBox.nativeElement.style.height='100px';
        this.myBox.nativeElement.style.background='red';
        console.log(this.myBox.nativeElement.innerHTML);
      }
    
      getChildRun(){
        //调用子组件里面的方法
         this.header.run();
      }
    }

    Angular8 需要添加 {static:boolean}属性,必填

      //获取header组件
      @ViewChild('header',{static:true}) header:any; 
    
    
    
    



  • 相关阅读:
    学习Linux shell脚本中连接字符串的方法
    使用 ffmpeg 转换视频格式
    一点不懂到小白的linux系统运维经历分享
    linux利用scp远程上传下载文件/文件夹
    angular ui-select
    JavaScript sort()方法
    js性能优化
    layer弹出层
    JS复制对象
    某天修改了啥bat批处理
  • 原文地址:https://www.cnblogs.com/magicg/p/15150630.html
Copyright © 2011-2022 走看看