angular之父子组件通信

父组件向子组件传入数据

例如将父组件的user对象传入子组件additem中
<app-additem [user]=”user" #additem></app-additem>
1、将父组件的user对象传入子组件additem中,组件模板中绑定属性[user]
2、子组件中类中先导入user对象,之后就可以在组件中直接使用该对象
@Input () user;

父组件访问子组件的方法和数据
方法一:
<button (click)="additem.add()" nz-button type="primary">添加</button>
<app-addItem [user]=“user #additem></app-addItem>
通过在子组件标签上加上属性#<name>,那么在组件模板中就可以直接通过该名称调用子组件里的方法和属性。但是这种写法有局限性,只能在html模板中使用,父组件本身的ts代码中并不能使用

方法二:
父组件ts代码中调用子组件的方法和属性。
首先导入模块ViewChild。
import {ViewChild } from ‘@angular/core‘;
在父组件的类中将子组件作为viewChild注入到父组件中
@ViewChild(AdditemComponent)
private additem: AdditemComponent
在父组件的方法中就可以通过this.additem[方法/属性名]来调用子组件的方法或属性数据

子组件调用父组件的方法

子组件导出 EventEmitter 属性,通过emits方法,触发父组件中绑定的该属性的事件。
具体用法:
子组件中引入EventEmitter和Output 模块
import { EventEmitter, Output } from ‘@angular/core‘;
定义输出:
@Output() addItem = new EventEmitter();

触发:
this.addItem.emit(this.user);
父组件定义addItem事件
<app-addItem (addItem)="onAdditem($event)"></app-addItem>
当子组件emit触发父组件的自定义事件addItem时,会触发父组件的onAdditem方法

原文地址:https://www.cnblogs.com/leejay6567/p/9388228.html

时间: 2024-10-14 01:14:13

angular之父子组件通信的相关文章

Vuejs——(10)组件——父子组件通信

版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 本篇资料来于官方文档: http://cn.vuejs.org/guide/components.html#u7236_u5B50_u7EC4_u4EF6_u901A_u4FE1 本文是在官方文档的基础上,更加细致的说明,代码更多更全. 简单来说,更适合新手阅读 (二十七)父子组件通信 ①访问子组件.父组件.根组件: this.$parent    访问父组件 this.$children   访问子

从$emit 到 父子组件通信 再到 eventBus

故事还是得从$emit说起,某一天翻文档的时候看到$emit的说明 触发当前实例上的事件?就是自身组件上的事件呗,在父子组件通信中,父组件通过props传递给子组件数据(高阶组件可以用provide和inject),由于这是单向数据流,为了保证复用组件的的时候出现数据错乱. 那么只能通过在子组件里面去触发一个事件,来让父组件自己更新数据. 那么问题来了,$emit不是说好的触发当前实例上的事件吗?那是怎么去能触发父组件数据更新的呢?难道父组件里也能$on对应的事件??? 其实不是的,看下面这个示

父子,子父,非父子组件通信

父子组件通信 父亲的数据给子集 父组件向子组件传值 ??? 子组件在props中创建一个属性,用于接收父组件传过来的值: ??? 父组件 引入子组件-->注册子组件-->引用子组件: ??? 在子组件标签中添加子组件props中创建的属性: ??? 将所要传递的值赋值给该属性. props: prop类型:通常你希望每个prop都有指定的数据类型,你可以以对象的形式列出prop,对象的属性的名称和值分别对应了prop的值和类型. 单向数据流:所有的prop都使得其父子prop形成一个单向数据流

vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例

vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发和监听来实现组件之间的通信和参数传递. 首先需要在任意地方添加一个bus.js 在bus.js里面 写入下面信息 1 import Vue from 'vue' 2 export default new Vue; 在需要通信的组件都引入B

vue2.0父子组件通信的方法

vue2.0组件通信方法:props传值和emit监听.(.sync方法已经移除.详情请点击)(dispatch-和-broadcast方法也已经废弃) props方法传值:Props 现在只能单项传递.为了对父组件产生反向影响,子组件需要显式地传递一个事件而不是依赖于隐式地双向绑定.props方法传值比较简单,缺点是属性会比较多. (1)父传子 [ props传值 ] <template>  <div> <input type="text" v-mode

Vue父子组件通信实践

组件(Component)是Vue.js的核心部分,组件的作用域是孤立的,所以不能在子组件模板内直接引用父组件的数据,但是组件之间的通信是必不可少的.组件A在其模板中使用了组件B,A组件要向B组件传递数据,B组件要将其内部发生的事情告知A组件,那么A.B组件怎么进行通信呢? Vue.js父子组件的关系可以总结为props down,events up,父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息,它们的工作方式如下图所示: 父组件 - 子组件:父组件传值给子组

react初探(二)之父子组件通信、封装公共组件

一.前言 在组件方面react和Vue一样的,核心思想玩的就是组件,下面举两个组件常用的情景. 场景一:假如我们现在有一个页面包含表格以及多个弹框,这种时候如果将这个页面的业务代码写在一个组件中,那么这一块的代码会看着非常恶心.如果这个时候我们将这个页面的表格以及弹框这些单独的模块分别写成组件的形式,然后再在这个页面中将这些组件引入进来,那样我们的代码会看着非常整洁.这样做会需要使用到父子组件之间的通信,下面会详细解释. 场景二:日常项目中我们会经常遇到某一个功能会在不同地方使用,但是每次使用的

vue学习之父子组件通信两种方法

初学vue,最常用及实用的就是父子组件之间的通信了,在此记录一点自己的学习过程 方法一:props及$emit 父组件中先引入子组件,然后components里面注册组件,然后template里调用,调用的时候通过v-bind传递值给子组件,v-on监听子组件$emit传递过来的值 子组件中先用props接收父组件的传值,注意子组件中不可直接修改父组件的传值,可通过watch监听来赋值,通过$emit来传递值给父组件 方法二:ref 父组件传值props方法不变,父组件可通过使用ref来调用子组

Angular中父子组件双向绑定传值

下面为大家展示一个较为简单的ng父子组件双向绑定传值,下面是父组件页面 这个页面的大概功能就是父组件(红色)通过输入框输入内容反映到子组件上进行展示,并且进行了投影, 子组件(橙黄色)通过Input输入框输入内容反映到父组件上,并且使用了@Output传值给父组件 下面是父组件的页面 父组件ts 子组件页面 子组件ts 我主要来说下需要注意的几个地方,第一个就是当我利用子组件的@Output发射数据给父组件的时候, import { EventEmitter } from '@angular/c