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 相关文章推荐
Dojo 学习要点
Sep 03 Javascript
javascript 基础篇4 window对象,DOM
Mar 14 Javascript
jQuery中after()方法用法实例
Dec 25 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
记录一次完整的react hooks实践
Mar 11 Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 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
在PHP中执行系统外部命令
2006/10/09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python动态导入模块的方法实例分析
2018/06/28 Python
django 单表操作实例详解
2019/07/30 Python
python实现梯度法 python最速下降法
2020/03/24 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
教师申诉制度
2014/01/29 职场文书
音乐教师求职信
2014/06/28 职场文书
网络技术专业求职信
2014/07/13 职场文书
公司离职证明样本
2014/09/13 职场文书
给老师的一封感谢信
2015/01/20 职场文书
仓管员岗位职责
2015/02/03 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android