ng2父子模塊通信@ViewChild和@Inject


一、@ViewChild

父組件中使用@ViewChild拿到子組件的變量和方法(父組件可調用子組件的方法和變量

parent.component.ts:

import { Component, OnInit, ViewChild } from '@angular/core';
import { ChildComponent } from './child.component';

@Component({
  selector: 'my-parent',
  templateUrl: './parent.component.html',
  styleUrls: [ './parent.component.css' ],
})
export class ParentComponent implements OnInit {
  //通過@ViewChild注冊子組件
 @ViewChild(ChildComponent) public child:ChildComponent;
  public countNum: number;
  public firstName:string = "Jeck";
  public fullName:string = "";
  
  constructor() {}
  
  ngOnInit(): void {
    
  }
  displayFull(){
    this.fullName = this.firstName + this.child.lastName;
   console.log(this.fullName) //"Jeck wang" } }

child.component.ts:

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

@Component({
  selector: 'my-child',
  templateUrl: './child.component.html',
  styleUrls: [ './child.component.css' ],
})
export class ChildComponent implements OnInit {
  public lastName:string = "wang";
  
  constructor() {}
  
  ngOnInit(): void {
    
  }

}

二、@Inject

子組件中使用@Inject調用父組件中的變量和方法

parent.component.ts:

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

@Component({
  selector: 'my-parent',
  templateUrl: './parent.component.html',
  styleUrls: [ './parent.component.css' ],
})
export class ParentComponent implements OnInit {
  
  constructor() {}
  
  ngOnInit(): void {
    
  }
  sayHello(){
    console.log("Hello!")
  }
}

child.component.ts:

import { Component, OnInit, Inject, forwardRef} from '@angular/core';
import { ParentComponent } from './parent.component';

@Component({
  selector: 'my-child',
  templateUrl: './child.component.html',
  styleUrls: [ './child.component.css' ],
})
export class ChildComponent implements OnInit {
  
  constructor(
    @Inject(forwardRef(()=>ParentComponent)) public parent:ParentComponent
  ) {}
  
  ngOnInit(): void {
    this.parent.sayHello();   //"Hello!"
  }
}

 注意:如果父子模塊通過以上方式相互引用,請在父模塊中使用 @ViewChild(forwardRef(()=>ChildComponent)) public child:ChildComponent 方式避免父子組件循環引用報錯

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM