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 白痴级入门教程
Nov 11 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
Sep 23 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
js和jquery使按钮失效为不可用状态的方法
Jan 26 Javascript
js判断一个字符串是否包含一个子串的方法
Jan 26 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
layui结合form,table的全选、反选v1.0示例讲解
Aug 15 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
教你如何把一篇文章按要求分段
2006/10/09 PHP
php5 and xml示例
2006/11/22 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php生成短网址示例
2014/05/05 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
js 程序执行与顺序实现详解
2013/05/13 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
Python创建日历实例
2014/08/21 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python中的字符串替换操作示例
2016/06/27 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
深入理解Django的中间件middleware
2018/03/14 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python重要函数eval多种用法解析
2020/01/14 Python
python实现梯度下降法
2020/03/24 Python
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
毕业生就业推荐信范文
2013/12/01 职场文书
大学生表扬信范文
2014/01/09 职场文书
简历自我评价模版
2014/01/31 职场文书
教师个人学习总结
2015/02/11 职场文书
银行实习推荐信
2015/03/27 职场文书
交通事故被告答辩状
2015/05/22 职场文书
培训班开班主持词
2015/07/02 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书