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 相关文章推荐
jquery动态加载图片数据练习代码
Aug 04 Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 Javascript
javascript基础之查找元素的详细介绍(访问节点)
Jul 05 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
全面解析Bootstrap表单使用方法(表单控件)
Nov 24 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
Node.js实现文件上传的示例
Jun 28 Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
Apr 29 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处理换行符的问题 \r\n
2013/06/13 PHP
php 基础函数
2017/02/10 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
python的id()函数解密过程
2012/12/25 Python
Python解释执行原理分析
2014/08/22 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
详细分析python3的reduce函数
2017/12/05 Python
在python里从协程返回一个值的示例
2019/02/19 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python脚本后台执行方式
2019/12/21 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
keras多显卡训练方式
2020/06/10 Python
python把一个字符串切开的实例方法
2020/09/27 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
医学生实习自我鉴定
2013/09/27 职场文书
自我评价中英文语句
2013/11/30 职场文书
报关专员求职信范文
2014/02/22 职场文书
班级出游活动计划书
2014/08/15 职场文书
学生自我评语
2015/01/04 职场文书
python解决12306登录验证码的实现
2021/04/18 Python