angular5 组件通信(一)
用了两年angular1,对1的组件通信比较熟练,最直接的就是直接使用scope的父子节点scope就可以实现,且基本都是基于作用域实现的通信;还有就是emit,broadcast,on这几个东西了。但是到了angular2,就不再有作用域这个概念了,那么,angular2以后,组件的通信是什么样的呢?
主要是父子组件的通信,angular5使用的是@Input来实现父传子,通过@Output和EventEmitter来实现子传父。由此可见其单向数据绑定思想,对于提升效率有很大作用。而父子互传,则又相当于1的双向数据绑定。
上代码解析:
// child-component.ts
import { OnInit, Component, Input } from '@angular/core'; @Component({
selector: 'child-component',
...
})
export class ChildComponent implements OnInit {
@Input
count: number = 0; ngOnInit() {
console.log(this.count); // 父组件内传入的值或者我们自己设置的初始值0
} increaseNumber() {
this.count ++;
} descreaseNumber() {
this.count --;
}
}
// father-component.ts
import { Component } from '@angular/core';
import { ChildComponent } from '../child-component/child-component'; @Component({
template: `
<child-component [count]='initialCount'></child-component>
`,
...
})
export class FatherComponent {
initialCount: number = 5;
}
至此则实现了父传[count]='initialCount'到子的通信。
我们给父组件增加一个事件接收子组件发来的消息,并且在子组件需要发送的地方进行发送。
// father-component.ts
import { Component } from '@angular/core';
import { ChildComponent } from '../child-component/child-component'; @Component({
template: `
<child-component [count]='initialCount' (change)="countChange($event)"></child-component>
`,
...
})
export class FatherComponent {
initialCount: number = 5; countChange($event) { }
}
// child-component.ts
import { Component, Input, Output, EventEmitter } from '@angular/core'; @Component({
selector: 'child-component',
...
})
export class ChildComponent {
@Input
count: number = 0; @Output
change = new EventEmitter(); increaseNumber() {
this.count ++;
this.change.emit(this.count);
} descreaseNumber() {
this.count --;
this.change.emit(this.count);
}
}
至此实现父子双向通信。
而在angular中,双向绑定有独特的写法,即[()],如上边的child-component就可以写作
<child-component [(count)]='initialCount'></child-component>
即:双向数据绑定 = 单向数据绑定 + 事件 的思想。
<input type='text' name='userName' [(ngModel)]="userName">
等价于
<input type='text' name='userName' [ngModel]="userName" (ngModelChange)="userName=$event">
除此之外,还有通过service,消息定义subscribe,父子互相获取实例这几种方法来实现。见
https://www.cnblogs.com/huangenai/p/7246651.html
https://blog.csdn.net/qq_15096707/article/details/52859110
angular5 组件通信(一)的更多相关文章
- 关于React的父子组件通信等等
//==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...
- Angular2 组件通信
1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...
- vue.js入门(3)——组件通信
5.2 组件通信 尽管子组件可以用this.$parent访问它的父组件及其父链上任意的实例,不过子组件应当避免直接依赖父组件的数据,尽量显式地使用 props 传递数据.另外,在子组件中修改父组件的 ...
- Intent进行组件通信的一些体会
Intent进行组件通信的原理 l Intent协助应用间的交互与通讯 Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述.Android则根据此Intent的描述,负责找到对应 ...
- 进程外组件通信之免注册com通信【原创】
最近在搞进程外组件通信的东西,写了个demo,免注册的,一直没调通,其实就是两个问题卡了好几天,也没找到有用的资料,试了好几天终于才解决,现简单记录下来,免得大家跟我走一样的弯路.下面com端程序名称 ...
- vue2.0 组件通信
组件通信: 子组件要想拿到父组件数据 props 子组件不允许直接给父级的数据, 赋值操作如果想更改,父组件每次穿一个对象给子组件, 对象之间引用. 例子: <script> window ...
- React之组件通信
组件通信无外乎,下面这三种父子组件,子父组件,平行组件(也叫兄弟组件)间的数据传输.下面我们来分别说一下: 父子组件: var Demo=React.createClass({ getInitialS ...
- Vue 非父子组件通信
组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...
- vue子父组件通信
之前在用vue写子父组件通信的时候,老是遇到问题!!! 子组件传值给父组件: 子组件:通过emit方法给父组件传值,这里的upparent是父组件要定义的方法 模板: <div v-on:cli ...
随机推荐
- 1. 模拟Queue
package com.gf.conn009; import java.util.LinkedList; import java.util.concurrent.atomic.AtomicIntege ...
- Spring 中事务控制的API介绍
1.PlatformTransactionManager Spring所有事务代理类都是基于PlatformTransactionManager接口的实现. 此接口是spring的事务管理器,它里面提 ...
- 改变Tomcat在地址栏上显示的小猫图标
部署在Tomcat上的项目通常在地址栏会显示一个小猫的图标,那么如何改变这个图标呢? 第一步.制作自己显示的图标 这里使用的是在线制作的方式,推荐一个在线制作的网站---比特虫:http://www. ...
- WPF Modern UI 主题更换原理
WPF Modern UI 主题更换原理 一 . 如何更换主题? 二 . 代码分析 代码路径 : FirstFloor.ModernUI.App / Content / SettingsAppeara ...
- 网页字体在Frontpage2000制作网页中的讲解
运用HTML,我们可以对字体的大小及字形进行简单的修改,但要进行统一地控制.创建特殊效果,就必须要用到CSS.它能让您更有效地控制网页外观,并可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力. ...
- [总结]JS操作DOM常用API详解
文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...
- 我写的Java相关的文章
此文正在更新中... Activiti 升级到Activiti7了. Web service/Soap Java如何调用.net写的asmx服务
- T研究:国内云BPM市场规模尚小,预计2018年仅为3.29亿元
文章摘要:T研究发现,目前国内云BPM市场规模不高,预计今年为3.29亿元,不过其增速稳定,未来发展仍可期. BPM?什么鬼?反正作为“菊外人”的小编是第一次听说. 其实,对于这个词,不光是小编,国内 ...
- 在“非软件企业”开发软件的困局 ZT
软件产品广泛服务于各行业,其开发具有高科技.高投入.高产出.高风险的特点.在项目开发和软件应用中,只有将人员能力的发挥与科学技术的使用应用市场的认识进行最佳的融合,才能发挥软件的效益.普通企业虽涉足软 ...
- Spring学习之旅(一)极速创建Spring框架java工程项目
编译工具:eclipse 1)创建java工程:Spring_helloworld 2)导入所需jar包: 3)创建一个实体类: public class HelloBeans { private S ...