angular父子组件通信详解

 更新时间:2021年12月22日 16:03:26   作者:桐溪漂流  
这篇文章主要为大家介绍了angular父子组件通信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

用到的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 { }
}

效果

效果图

总结

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

相关文章

  • AngularJS service之select下拉菜单效果

    AngularJS service之select下拉菜单效果

    这篇文章主要为大家详细介绍了AngularJS service之select下拉菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • AngularJS的依赖注入实例分析(使用module和injector)

    AngularJS的依赖注入实例分析(使用module和injector)

    这篇文章主要介绍了AngularJS的依赖注入,结合实例形式分析了依赖注入的原理及使用module和injector实现依赖注入的步骤与操作技巧,需要的朋友可以参考下
    2017-01-01
  • 详解使用KeyValueDiffers检测Angular对象的变化

    详解使用KeyValueDiffers检测Angular对象的变化

    这篇文章主要为大家介绍了KeyValueDiffers检测Angular对象的变化使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 解决angular2在双向数据绑定时[(ngModel)]无法使用的问题

    解决angular2在双向数据绑定时[(ngModel)]无法使用的问题

    今天小编就为大家分享一篇解决angular2在双向数据绑定时[(ngModel)]无法使用的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Angularjs实现多个页面共享数据的方式

    Angularjs实现多个页面共享数据的方式

    本文给大家介绍使用Angularjs实现多个页面共享数据的方式,通过定义一个共享服务service来实现此功能,对angularjs共享数据相关知识感兴趣的朋友一起学习
    2016-03-03
  • AngularJS手动表单验证

    AngularJS手动表单验证

    这篇文章主要介绍了AngularJS手动表单验证的相关资料,AngularJS的表单验证大致有两种,一种是手动验证,一种是自动验证,本文重点介绍AngularJS手动表单验证,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • AngularJS 整理一些优化的小技巧

    AngularJS 整理一些优化的小技巧

    本文主要介绍AngularJS 一些优化上的小技巧,这里整理了几种方法供大家参考,有兴趣的小伙伴可以参考下
    2016-08-08
  • AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】

    AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】

    这篇文章主要介绍了AngularJS验证信息框架的封装插件用法,分析了AngularJS表单验证规则并实例说明了w5cValidator扩展插件的相关使用技巧,需要的朋友可以参考下
    2016-11-11
  • 详解Angular之路由基础

    详解Angular之路由基础

    单页应用中,组件时构建应用的基础元素,页面展示什么内容均是靠页面有什么组件决定的,而展示什么组件又是由一组路由(带有Url元素的特定集合,可用于导航视图)决定的,希望本文可以帮助读者了解路由的基础概念和基础使用、写法。
    2021-05-05
  • 在 Angular2 中实现自定义校验指令(确认密码)的方法

    在 Angular2 中实现自定义校验指令(确认密码)的方法

    这篇文章给大家探索 Angular 2 内建的自定义验证,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01

最新评论