AfterViewInit、AfterViewChecked与父组件调用子组件的方法

app HTML

<app-nextchild #child1></app-nextchild>
<app-nextchild #child2></app-nextchild>
<button (click)="child2.helloGreeting('Smith')">调用子组件方法</button>

app TS

import {AfterViewChecked, AfterViewInit, Component, OnInit, ViewChild} from '@angular/core';
import {NextchildComponent} from './nextchild/nextchild.component';

// @ts-ignore
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, AfterViewInit, AfterViewChecked{
  greeting = 'Hello';
  user: {name: string} = {name: 'Jenny'};

  @ViewChild('child1') child1: NextchildComponent;

  constructor() {
  }

  // tslint:disable-next-line:use-lifecycle-interface
  ngOnInit(): void {
    setInterval(() => {
      this.child1.helloGreeting('小青');
    }, 5000);
  }

  ngAfterViewChecked(): void {
    console.log('父组件的视图变更检测完成');
  }

  ngAfterViewInit(): void {
    console.log('父组件装配完成');
  }
}

3.nextChild HTML

<p>nextchild works!</p>

4.nextchild TS

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

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

  constructor() { }

  ngAfterViewChecked(): void {
        console.log('子组件的视图变更检测完成');
    }

  ngAfterViewInit(): void {
    console.log('子组件装配完成');
    }

  ngOnInit(): void {
  }

  public helloGreeting(name: string): void{
    console.log('Hello ' + name);
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值