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的开发个代阴影的对话框效果代码
Jul 28 Javascript
JSON.stringify 语法实例讲解
Mar 14 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
js中的内部属性与delete操作符介绍
Aug 10 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
Aug 18 Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 Javascript
Vue.js中extend选项和delimiters选项的比较
Jul 17 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
详解JavaScript之ES5的继承
Jul 08 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/12/16 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
python实现ipsec开权限实例
2014/11/11 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
浅谈Django前端后端值传递问题
2020/07/15 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
机电一体化自荐信
2013/12/10 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
销售冠军获奖感言
2014/02/03 职场文书
公益广告宣传方案
2014/02/28 职场文书
社区志愿者培训方案
2014/06/10 职场文书
2015感人爱情寄语
2015/02/26 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python