angularDom操作以及@ViewChild、执行 css3 动画

DOM操作

ngAfterViewInit(){ 
//原生JS操作
var boxDom:any=document.getElementById('box'); 
boxDom.style.color='red'; 
}
//@ViewCHild操作DOM
import { Component ,ViewChild,ElementRef} from '@angular/core';
@ViewChild('myattr') myattr: ElementRef;
<div #myattr></div>
let attrEl = this.myattr.nativeElement;

父子组件中通过 ViewChild 调用子组件 的方法

//调用子组件给子组件定义一个名称
<app-footer #footerChild></app-footer>
// 引入 ViewChild
import { Component, OnInit ,ViewChild} from '@angular/core';
// ViewChild 和刚才的子组件关联起来
@ViewChild('footerChild') footer;
//调用子组件
run(){this.footer.footerRun(); }
//html
<app-header #header></app-header>
<div #myBox>
   我是一个dom节点
</div>
<button (click)="getChildRun()">获取子组件的方法</button>
//js代码
/*
ViewChild获取dom节点
    1、模板中给dom起一个名字
      <div #myBox>
        我是一个dom节点
      </div>
    2、在业务逻辑里面引入ViewChild
    import { Component, OnInit,ViewChild} from '@angular/core';
    3、 写在类里面    @ViewChild('myBox') myBox:any;
    4、ngAfterViewInit生命周期函数里面获取dom
    this.myBox.nativeElement
*/
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') myBox:any;
  //获取一个组件
  @ViewChild('header') 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()     
  }
}

CSS动画

ngOnInit() {   
       //组件和指令初始化完成   并不是真正的dom加载完成
       let oBox:any=document.getElementById('box');
       console.log(oBox.innerHTML);
       oBox.style.color="red";
       //获取不到dom节点
      /*
       let oBox1:any=document.getElementById('box1');
       console.log(oBox1.innerHTML);
       oBox1.style.color="blue";
      */ 
  }
  //视图加载完成以后触发的方法    dom加载完成  (建议把dom操作放在这个里面)  
  ngAfterViewInit(){
       let oBox1:any=document.getElementById('box1');
       console.log(oBox1.innerHTML);
       oBox1.style.color="blue";
  }
hideAside(){
    //原生js获取dom节点
    var asideDom:any=document.getElementById('aside');
    asideDom.style.transform="translate(100%,0)";
 }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • It's a common pattern in React to wrap a component in an ...
    jplyue阅读 3,310评论 0 2
  • Yan Ruyu_Vue学习笔记 Vue基本认知 Vue是一个JavaScript框架,它的特点在于使用者不用再思...
    YuJianChi阅读 559评论 0 0
  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,524评论 1 33
  • Angular7入门总结篇 一、Angular 介绍 根据项目数统计 angular(1.x 、2.x 、4.x、...
    痞_4fc8阅读 370评论 0 3
  • 前端开发面试题 面试题目: 根据你的等级和职位的变化,入门级到专家级,广度和深度都会有所增加。 题目类型: 理论知...
    怡宝丶阅读 2,609评论 0 7