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 相关文章推荐
css把超出的部分显示为省略号的方法兼容火狐
Jul 23 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
深入理解JS DOM事件机制
Aug 06 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
浅析Vue 生命周期
Jun 21 Javascript
angular 组件通信的几种实现方式
Jul 13 Javascript
微信小程序实现文字从右向左无限滚动
Nov 18 Javascript
JS 图片压缩原理与实现方法详解
Apr 29 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 Javascript
jquery实现抽奖功能
Oct 22 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP多进程编程实例
2014/10/15 PHP
php使用session二维数组实例
2014/11/06 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
python文件写入实例分析
2015/04/08 Python
python表格存取的方法
2018/03/07 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
.NET remoting的两种通道是什么
2016/05/31 面试题
军训 自我鉴定
2014/02/03 职场文书
关于学习的演讲稿
2014/05/10 职场文书
医学会议开幕词
2016/03/03 职场文书
详解MySQL集群搭建
2021/05/26 MySQL