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 相关文章推荐
Javascript 日期对象Date扩展方法
May 30 Javascript
jquery如何通过name名称获取当前name的value值
Dec 20 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
Bootstrap基本插件学习笔记之按钮(21)
Dec 08 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 jQuery
Angular实现表单验证功能
Nov 13 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 Javascript
jQuery+ThinkPHP实现图片上传
Jul 23 jQuery
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开发者的10个技巧
2011/02/25 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
求职推荐信
2013/10/28 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
大学生就业策划书范文
2014/04/04 职场文书
市场调查策划方案
2014/06/10 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
表扬信格式模板
2015/05/05 职场文书
python入门之算法学习
2021/04/22 Python
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
Vue操作Storage本地化存储
2022/04/29 Vue.js
apache ftpserver搭建ftp服务器
2022/05/20 Servers