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 相关文章推荐
简单JS代码压缩器
Oct 12 Javascript
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
Dec 15 Javascript
jQuery性能优化28条建议你值得借鉴
Feb 16 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
jQuery实现点击查看大图并以弹框的形式居中
Aug 08 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
Angular实现表单验证功能
Nov 13 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
Sep 22 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
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 删除记录实现代码
2009/03/12 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Python数据结构与算法之列表(链表,linked list)简单实现
2017/10/30 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
科学发展观标语
2014/10/08 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
P站美图推荐——变身女主角特辑
2022/03/20 日漫