详解Angular2组件之间如何通信
发布时间 - 2026-01-11 02:00:36 点击率:次组件之间的共享可以有好几种方式

父->子 input 方式
import {Component,Input} from 'angular2/core';
@Component({
selector: 'child',
template: `
<h2>child {{content}}</h2>
`
})
class Child {
@Input() content:string;
}
@Component({
selector: 'App',
directives: [Child],
template: `
<h1>App</h1>
<child [content]="i"></child>
`
})
export class App {
i:number = 0;
constructor() {
setInterval(()=> {
this.i++;
}, 1000)
}
}
子->父 output 方式
import {Output,EventEmitter,Component} from 'angular2/core';
@Component({
selector: 'child',
template: `
<h2>child</h2>
`
})
class Child {
@Output() updateNumberI:EventEmitter<number> = new EventEmitter();
i:number = 0;
constructor() {
setInterval(()=> {
this.updateNumberI.emit(++this.i);
}, 1000)
}
}
@Component({
selector: 'App',
directives: [Child],
template: `
<h1>App {{i}}</h1>
<child (updateNumberI)="numberIChange($event)"></child>
`
})
export class App {
i:number = 0;
numberIChange(i:number){
this.i = i;
}
}
子获得父实例
如果不了解forwardRef用处的的可以看 #11
@Host 表示这个Injector必须是host element在这里可以理解为 parent
import {Host,Component,forwardRef} from 'angular2/core';
@Component({
selector: 'child',
template: `
<h2>child</h2>
`
})
class Child {
constructor(@Host() @Inject(forwardRef(()=> App)) app:App) {
setInterval(()=> {
app.i++;
}, 1000);
}
}
@Component({
selector: 'App',
directives: [Child],
template: `
<h1>App {{i}}</h1>
<child></child>
`
})
export class App {
i:number = 0;
}
父获得子实例
子元素指令在父constructor时是获取不到的,所以必须在组件的ngAfterViewInit生命周期钩子后才能获取,如果对组件生命周期不了解的话,可以参考#56
import {ViewChild,Component} from 'angular2/core';
@Component({
selector: 'child',
template: `
<h2>child {{i}}</h2>
`
})
class Child {
i:number = 0;
}
@Component({
selector: 'App',
directives: [Child],
template: `
<h1>App {{i}}</h1>
<child></child>
`
})
export class App {
@ViewChild(Child) child:Child;
ngAfterViewInit() {
setInterval(()=> {
this.child.i++;
}, 1000)
}
}
service 方式
import {Component,Injectable} from 'angular2/core';
@Injectable();
class KittencupService {
i:number = 0;
}
@Component({
selector: 'child',
template: `
<h2>child {{service.i}}</h2>
`
})
class Child {
constructor(public service:KittencupService){
}
}
@Component({
selector: 'App',
directives: [Child],
providers: [KittencupService],
template: `
<h1>App {{i}}</h1>
<child></child>
`
})
export class App {
constructor(service:KittencupService) {
setInterval(()=> {
service.i++;
}, 1000)
}
}
service EventEmitter方式
import {Component,Injectable,EventEmitter} from 'angular2/core';
@Injectable()
class KittencupService {
change: EventEmitter<number>;
constructor(){
this.change = new EventEmitter();
}
}
@Component({
selector: 'child',
template: `
<h2>child {{i}}</h2>
`
})
class Child {
public i:number = 0;
constructor(public service:KittencupService){
service.change.subscribe((value:number)=>{
this.i = value;
})
}
}
@Component({
selector: 'App',
directives: [Child],
providers: [KittencupService],
template: `
<h1>App {{i}}</h1>
<child></child>
`
})
export class App {
i:number = 0;
constructor(service:KittencupService) {
setInterval(()=> {
service.change.emit(++this.i);
}, 1000)
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Angular组件之间通信
# Angular组件通信
# Angular2组件通信
# Angular2 父子组件数据通信实例
# Angular2 父子组件通信方式的示例
# angular中不同的组件间传值与通信的方法
# Angular 2父子组件之间共享服务通信的实现
# Angular2 组件通信的实例代码
# Angularjs2不同组件间的通信实例代码
# angular4 共享服务在多个组件中数据通信的示例
# 不了解
# 在这里
# 大家多多
# 好几种
# content
# Child
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel用户密码怎么加密_Laravel Hash门面使用教程
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
昵图网官方站入口 昵图网素材图库官网入口
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
如何在宝塔面板中修改默认建站目录?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
网站制作软件免费下载安装,有哪些免费下载的软件网站?
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何解决hover在ie6中的兼容性问题
Android okhttputils现在进度显示实例代码
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
如何在阿里云通过域名搭建网站?
如何快速搭建高效WAP手机网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
Python图片处理进阶教程_Pillow滤镜与图像增强
利用 Google AI 进行 YouTube 视频 SEO 描述优化
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel怎么在Controller之外的地方验证数据
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
手机网站制作与建设方案,手机网站如何建设?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Python自动化办公教程_ExcelWordPDF批量处理案例
佛山网站制作系统,佛山企业变更地址网上办理步骤?
香港网站服务器数量如何影响SEO优化效果?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何登录建站主机?访问步骤全解析
微信小程序 配置文件详细介绍
Firefox Developer Edition开发者版本入口
大连网站制作公司哪家好一点,大连买房网站哪个好?
微信小程序 五星评分(包括半颗星评分)实例代码
Laravel如何实现一对一模型关联?(Eloquent示例)
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Laravel如何与Inertia.js和Vue/React构建现代单页应用
nodejs redis 发布订阅机制封装实现方法及实例代码
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何在七牛云存储上搭建网站并设置自定义域名?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
网站页面设计需要考虑到这些问题
如何确认建站备案号应放置的具体位置?

