angular父子组件通信详解

2022-04-15 0 1,041
目录
  • 用到的api
  • 简单的例子
    • person.ts
    • 父组件
    • 子组件
    • 效果
  • 总结

    用到的api

    Input – 子组件中定义可接受的属性,可以用来父组件给子组件传递数据

    Output – 子组件中定义输出的属性,该属性需要是 EventEmitter 的事件类型,用来通知父组件做出相应的操作

    EventEmitter – 用在带有 @Output 指令的组件中,以同步或异步方式发出自定义事件,并通过订阅实例来为这些事件注册处理器。

    简单的例子

    列表渲染子组件,点击子组件通知父组件进行操作

    person.ts

    export interface Person {
      name: string;
      age: number;
      sex: string;
    }
    

    父组件

    import { Component, OnInit } from '@angular/core';
    import { Person } from './person';
    @Component({
      selector: 'app-comp-parent',
      template: `
        <app-comp-child
          *ngFor="let person of personList"
          (itemClick)="onItemClick($event)"
          [data]="person"
        ></app-comp-child>
      `,
    })
    export class CompParentComponent implements OnInit {
      personList: Person[] = [
        { name: '张三', age: 21, sex: '男' },
        { name: '李四', age: 25, sex: '男' },
        { name: '李莉', age: 20, sex: '女' },
      ];
      constructor(){ }
      ngOnInit(): void { }
      onItemClick(item: Person){
        console.log('click-person: ', item);
      }
    }
    

    子组件

    import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
    import { Person } from './person';
    @Component({
      selector: 'app-comp-child',
      template: `
        <div (click)="itemClick.emit(data)">
          Name: {{ data.name }}
          Age: {{ data.age }}
          Sex: {{ data.sex }}
        </div>
      `,
    })
    export class CompChildComponent implements OnInit {
      @Input() data!: Person;
      @Output() itemClick = new EventEmitter();
      constructor(){ }
      ngOnInit(): void { }
    }
    

    效果

    angular父子组件通信详解

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注NICE源码的更多内容!

    免责声明:
    1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

    2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
    如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
    如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

    NICE源码网 JavaScript angular父子组件通信详解 https://www.niceym.com/21752.html