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函数使用技巧之 setTimeout(function(){},0)
Feb 09 Javascript
基于JavaScript 声明全局变量的三种方式详解
May 07 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
JavaScript保留两位小数的2个自定义函数
May 05 Javascript
jquery幻灯片插件bxslider样式改进实例
Oct 15 Javascript
Node.js与MySQL交互操作及其注意事项
Oct 05 Javascript
小发现之浅谈location.search与location.hash的问题
Jun 23 Javascript
Node.js实现注册邮箱激活功能的方法示例
Mar 23 Javascript
js实现图片跟随鼠标移动效果
Oct 16 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 Javascript
vue如何批量引入组件、注册和使用详解
May 12 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
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python基础之文件读取的讲解
2019/02/16 Python
Django实现文件上传下载功能
2019/10/06 Python
Python实现直播推流效果
2019/11/26 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
struct和class的区别
2015/11/20 面试题
数控技校生自我鉴定
2014/04/19 职场文书
大二学习计划书范文
2014/04/27 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
工资收入证明
2014/10/07 职场文书
无罪辩护词范文
2015/05/21 职场文书
时尚女魔头观后感
2015/06/04 职场文书
运动会主持词大全
2015/07/02 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
战友聚会致辞
2015/07/28 职场文书
安全生产学习心得体会
2016/01/18 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
python中的被动信息搜集
2021/04/29 Python