• angular的父子组件的通信


    父组件给子组件传值-@input

    父组件

    home.html

    <app-header [title]="title" [msg]="msg" [run]="run" [home]="this"></app-header>
    <br/>
    <hr>
    <div>我是首页组件</div>

    homt.ts

    import { Component, OnInit } from '@angular/core';
    
    @Component({
      selector: 'app-home',
      templateUrl: './home.component.html',
      styleUrls: ['./home.component.scss']
    })
    export class HomeComponent implements OnInit {
      public title:string="首页组件的标题";
      public msg:string="我是父组件的msg";
      constructor() { }
    
      ngOnInit() {
      }
      run(){
        alert("我是父组件的run方法");
      }
    }

    子组件header:

    header.html

    <p>头部组件!---{{msg}}</p>
    
    <button (click)="getParentMsg()">子组件里面获取父组件传入的msg</button>
    <br/>
    <button (click)="getParentRun()">子组件里面执行父组件的方法</button>

    header.ts

    import { Component, OnInit,Input } from '@angular/core';
    
    @Component({
      selector: 'app-header',
      templateUrl: './header.component.html',
      styleUrls: ['./header.component.scss']
    })
    export class HeaderComponent implements OnInit {
      @Input() title:any;
      @Input() msg:any;
      @Input() run:any;
      @Input() home:any;
      constructor() { }
    
      ngOnInit() {
      }
      getParentMsg(){
        //获取父组件的数据:
        alert(this.msg);
      }
      getParentRun(){
        // this.run();
        alert(this.home.msg);
        this.home.run();
      }
    }

     父组件获取子组件的属性和方法:

    父组件new.html

    <app-footer #footer></app-footer>
    <br/>
    <hr>
    <div>我是一个新闻组件</div>
    
    <button (click)="getChildMsg()">获取子组件的msg</button>
    
    <br/>
    <button (click)="getChildRun()">执行子组件的run方法</button>

    new.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('footer') footer:any;
      constructor() { }
    
      ngOnInit() {
      }
      getChildMsg(){
        alert(this.footer.msg);
      }
      getChildRun(){
        this.footer.run();
      }
    }

    子组件:

    footer.html

    <h2>我是footer子组件</h2>

    footer.ts

    import { Component, OnInit } from '@angular/core';
    
    @Component({
      selector: 'app-footer',
      templateUrl: './footer.component.html',
      styleUrls: ['./footer.component.scss']
    })
    export class FooterComponent implements OnInit {
    
      public msg:any="子组件的msg";
      constructor() { }
    
      ngOnInit() {
      }
      run(){
        alert("我是子组件的run方法");
      }
    
    }

    二、子组件通过@Output触发父组件的方法:

    父组件:

    .html

    <app-footer (outer)="run($event)"></app-footer>

    .ts

    import { Component, OnInit} from '@angular/core';
    
    @Component({
      selector: 'app-news',
      templateUrl: './news.component.html',
      styleUrls: ['./news.component.scss']
    })
    export class NewsComponent implements OnInit {
    
      constructor() { }
    
      ngOnInit() {
      }
    
      run(e){
        console.log(e);//子组件给父组件广播的数据
        alert("我是父组件的run方法");
      }
    }

    子组件:

    .html

    <h2>我是footer子组件</h2>
    <button (click)="sendParent()">通过@Output给父组件广播数据</button>

    .ts

    import { Component, OnInit,Output,EventEmitter } from '@angular/core';
    
    @Component({
      selector: 'app-footer',
      templateUrl: './footer.component.html',
      styleUrls: ['./footer.component.scss']
    })
    export class FooterComponent implements OnInit {
      @Output() private outer=new EventEmitter();
      public msg:any="子组件的msg";
      constructor() { }
    
      ngOnInit() {
      }
      sendParent(){
        // alert("111");
        this.outer.emit("我是子组件的数据");
      }
    }

  • 相关阅读:
    Cocos2d-x 3.2编译生成Android程序出错Error running command, return code: 2的解决方法
    利用Theme自定义Activity进入退出动画
    Activity的四种launchMode
    android中设置控件获得焦点
    android 反编译 for mac
    android中libs目录下armeabi和armeabi-v7a的区别
    解决Sublime Text 3中文显示乱码(tab中文方块)问题,sublime tab乱码
    mysql教程
    Failed to load c++ bson extension, using pure JS version
    mongodb导出数据
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/12158895.html
Copyright © 2020-2023  润新知