angular ViewChild

ViewChild 用于操作dom树元素,或是对操作子组件

一、操作dom元素

先用#xxx来标记dom元素

news.component.html


<div #myBox>
    我是一个dom节点
</div>

引入ViewChild,用@ViewChild绑定一个变量。nativeElement是真实的dom节点

news.component.ts

import { Component, OnInit, ViewChild } from '@angular/core';

@Component({
  selector: 'app-news',
  templateUrl: './news.component.html',
  styleUrls: ['./news.component.scss']
})
export class NewsComponent implements OnInit {

  @ViewChild('myBox',{static:false}) myBox:any;

  constructor() { }

  ngOnInit() {
  }

  ngAfterViewInit(): void {
    console.log(this.myBox);
    this.myBox.nativeElement.style.width='200px';
    this.myBox.nativeElement.style.height='100px';
    this.myBox.nativeElement.style.background='red';
    console.log(this.myBox.nativeElement);
    console.log(this.myBox.nativeElement.innerHTML);

  }

}

 

结果:

 

二、操作子组件

和操作dom元素一样,创建实例

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

子组件:

header.component.html

<h1>我是一个头部组件</h1>

header.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

  run() {
    alert('调用header组件的run()');
  }
}

在父组件中调用:

getChildRun(): void {
 // 调用子组件的方法
 this.myHeader.run();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值