angular4 共享服务在多个组件中数据通信的示例


Posted in Javascript onMarch 30, 2018

应用场景,不同组件中操作统一组数据,不论哪个组件对数据进行了操作,其他组件中立马看到效果。这样他们就要共用一个服务实例,是本次的重点,如果不同实例,那么操作的就不是同一组数据,那么就不会有这样的效果,想实现共用服务实例,就是在所有父组件中priviates:[]中引入这个组件,子组件中不需要再次引入,那么他们都是用的父组件中的服务实例。

1、公用服务

import {Injectable} from "@angular/core";

@Injectable()
export class CommonService {
 public dateList: any = [
 {
  name: "张旭超",
  age: 20,
  address: "北京市朝阳区"
 }
 ];

 constructor() {

 }

 addDateFun(data) {
 this.dateList.push(data);
 }
}

2、parent.component.ts

import {Component, OnInit} from "@angular/core";
import {CommonService} from "./common.service";

// 这里要通过父子公用服务来操作数据,只需要在父组件中引入服务。
@Component({
 selector: "parent-tag",
 templateUrl: "parent.component.html",
 providers: [
 CommonService
 ]
})
export class ParentComponent implements OnInit {
 public list: any = [];

 constructor(private commonService: CommonService) {
 this.list = commonService.dateList;
 }

 ngOnInit() {

 }
}

3、parent.component.html

<table width="500">
 <tr *ngFor="let item of list">
 <td>
  {{item.name}}
 </td>
 <td>
  {{item.age}}
 </td>
 <td>
  {{item.address}}
 </td>
 </tr>
</table>
<child-one-tag></child-one-tag>

4、child-one.component.ts

import {Component} from "@angular/core";
import {CommonService} from "./common.service";

@Component({
 selector: "child-one-tag",
 templateUrl: "child-one.component.html"
})
export class ChildOneComponent {
 public display: boolean = false;
 public username: string = "";
 public age: number = 20;
 public address: string = "";
 constructor(public commonService: CommonService) {

 }

 showDialog() {
 this.display = true;
 }

 hideDialog() {
 this.display = false;
 }

 addInfoFun() {
 let params = {
  name: this.username,
  age: this.age,
  address: this.address
 };
 this.commonService.addDateFun(params);
 params = {};
 }
}

5、child-one.component.html

<p-dialog header="弹窗" [(visible)]="display" [width]="300" appendTo="body" modal="modal">
 <form #myForm="ngForm" name="myForm">
 <p>姓名:<input type="text" name="username" [(ngModel)]="username" pInputText/></p>
 <p>年龄:<input type="number" name="age" [(ngModel)]="age" pInputText/></p>
 <p>地址:<input type="text" name="address" [(ngModel)]="address" pInputText/></p>
 <button pButton label="确定" type="submit" (click)="addInfoFun()"></button>
 <button pButton label="取消" (click)="hideDialog()"></button>
 </form>
</p-dialog>
<button label="添加" pButton (click)="showDialog()"></button>

angular4 共享服务在多个组件中数据通信的示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js有关元素内容操作小结
Dec 20 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
javascript操作符&quot;!~&quot;详解
Feb 10 Javascript
javascript断点调试心得分享
Apr 23 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
Sep 18 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 #Javascript
webpack4.0打包优化策略整理小结
Mar 30 #Javascript
Angular4学习笔记router的简单使用
Mar 30 #Javascript
vue.js中created方法作用
Mar 30 #Javascript
微信小程序实现全局搜索代码高亮的示例
Mar 30 #Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 #Javascript
Vue实现导出excel表格功能
Mar 30 #Javascript
You might like
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
实例讲解PHP表单处理
2019/02/15 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
js实现选项卡效果
2020/03/07 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
详解KMP算法以及python如何实现
2020/09/18 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
主要负责人任命书
2014/06/06 职场文书
节约用电标语
2014/06/17 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
贷款承诺书
2015/01/20 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis