zoukankan      html  css  js  c++  java
  • 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 方式避免父子组件循环引用报错

  • 相关阅读:
    Sublime Text 3 安装插件管理 Package Control
    Sublime Text 2&3中输入法不跟随光标移动的问题的解决方法
    Centos 7 yum 安装php
    Centos 7 yum 安装Apache
    正则验证多个邮箱用分号隔开
    Linux下修改网卡IP、DNS和网关
    mysqldump when doing LOCK TABLES问题
    jQuery遍历json
    Yii中CDbCriteria常用方法
    Parse error: syntax error, unexpected T_PUBLIC in 问题解决
  • 原文地址:https://www.cnblogs.com/sghy/p/7244500.html
Copyright © 2011-2022 走看看