ngAfterViewInit(){ var BoxDom:any=document.getElementById('Box'); BoxDom.style.color='red'; }
@H_404_0@Angular 中的 dom 操作(ViewChild)对变量定义数据类型,防止编译报错
- 定义模板(模板引用)
<div #myattr></div>
- @ViewChild定义模板引用变量
import { Component ,ViewChild,ElementRef} from '@angular/core'; @ViewChild('myattr',{static:true}) eleRef: ElementRef; ngAfterViewInit(){ let attrEl = this.eleRef.nativeElement; }
@H_404_0@父子组件中通过 ViewChild 调用子组件myattr要与模板中的 #myattr对应,名字不能出错,eleRef是变量
<app-footer #footerChild></app-footer>
- 引入 ViewChild
import { Component, OnInit ,ViewChild} from '@angular/core';
- ViewChild 和刚才的子组件关联起来
@ViewChild('footerChild',{static:true}) footer;
- 调用子组件
run(){ this.footer.footerRun(); }@H_404_0@完整案例
- 模板
<app-header #header></app-header> <div #myBox> 我是一个dom节点 </div> <button (click)="getChildRun()">获取子组件的方法</button>
- 逻辑定义
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(); } }@H_404_0@Angular8 需要添加
{static:boolean}
属性,必填
//获取header组件 @ViewChild('header',{static:true}) header:any;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。