angular中的服务
angular中的服务
angular中的服务相当于一个状态管理,可以将数据放在服务里面进行获取以及编辑。
服务的安装命令:
ng g service count
安装好后,会在服务的ts文件中引入一个Injectable模块,这是一个服务装饰器,可以通过@Injectable()将一个类装饰成一个服务。
Injectable分为全局和局部:
局部创建:
@Injectable({
provideIn:root;
})
provideIn有两个值:
root:表示只会在跟节点创建一个实例。
null:表示会创建多个一样的实例。
全局创建:
@Injectable()
全局创建的服务需要在app的模块文件中引入创建的服务。
import {CountService} from "./count/count.service"
并在providers中挂载:
三种挂载方法:
第一种方法
providers: [
CountService
]
这样挂载时把你创建的服务完全挂载上去
第二种方法
providers: [
{provide:CountService,useClass:NewCountService}//使用新的服务代替旧的服务
]
这种方法是用新创建的服务替换旧创建的服务
第三种方法
providers: [
{provide:CountService,useValue:{getCount(){return "只改服务中的一个方法"}}}//可以通过这个改掉服务中的一个方法
]
这种方法只改变服务中指定的方法
组件使用服务:
如果是局部创建的服务,组件在使用时需要先将服务引入。
import {CountService} from "../count/count.service";
创建实例有两种方法:
普通创建实例:
constructor() {
//普通的做法
var cs=new CountService();
console.log(cs.getCount());
}
依赖注入
constructor(cs:CountService) { //依赖注入:就是一种创建实例的方式,通过程序创建。可以是全局的,也可以是局部的
console.log(cs.getCount())
}
依赖注入就是通过程序将实例创建出来,我们只需要去使用它就可以啦。
可以将创建的实例作为组件中的属性:
constructor(private cs:CountService) {
console.log(this.cs.getCount())
}
将实例作为组件中的属性,就是在引入的时候将组件设置为私有属性
服务小案例:计数
header.component.html:
<p>
{{count}}
</p>
header.component.ts:
export class HeaderComponent implements OnInit {
count;
constructor(private cs:CountService) {
}
ngOnInit() {
}
ngAfterContentChecked(){
this.count=this.cs.count;
}
}
服务代码:
count.service.ts:
export class CountService {
count=5;
constructor() { }
setCount(payload){
return this.count+=payload;
}
}
增加和减小按钮
add-btn.component.html:
<p>
<button (click)="handleChange()" >+</button>
</p>
add-btn.component.ts:
export class AddBtnComponent implements OnInit {
constructor(private cs:CountService) {
}
ngOnInit() {
}
handleChange(){
this.cs.setCount(1);
}
}
减小按钮和增加一样的。
angular中的服务的更多相关文章
- Angular中的服务的使用
定义公共的方法,使得方法在组件之间共享调用 1. 创建服务命令 ng g service modbus-service # 创建服务到指定目录下 ng g service services/modbu ...
- angular中的服务和持久化实现
1.创建服务: ng g service my-new-service 创建到指定目录下面 ng g service services/storage 2.app.module.ts 里面引入创建的服 ...
- angular源码分析:angular中的依赖注入式如何实现的
一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...
- 在 Angular 中实现搜索关键字高亮
在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...
- Angular JS 中的服务注册方法
在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的 ...
- Angular中怎样创建service服务来实现组件之间调用公共方法
Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...
- Angular中ngCookies模块介绍
1.Cookie介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短 ...
- Deferred在jQuery和Angular中的使用与简单实现
Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Ang ...
- angular源码分析:angular中脏活累活的承担者之$interpolate
一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...
随机推荐
- The Embarrassed Cryptographer POJ - 2635 同余模+高精度处理 +线性欧拉筛(每n位一起处理)
题意:给出两数乘积K(1e100) 和 一个数L(1e6) 问有没有小于L(不能等于)的素数是K的因数 思路:把数K切割 用1000进制表示 由同余模公式知 k%x=(a*1000%x+b* ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造
题意 给出一个1-n的集合 gcd 集合里面的所有数 得到的 一个 数 然后自己选择删去一个数 要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...
- Tmutarakan Exams URAL - 1091(莫比乌斯函数 || 容斥)
题意: 求1 - s 中 找出k个数 使它们的gcd > 1 求这样的k个数的对数 解析: 从每个素数的倍数中取k个数 求方案数 然后素数组合,容斥一下重的 奇加偶减 莫比乌斯函数的直接套模 ...
- 【XSY2691】中关村 卢卡斯定理 数位DP
题目描述 在一个\(k\)维空间中,每个整点被黑白染色.对于一个坐标为\((x_1,x_2,\ldots,x_k)\)的点,他的颜色我们通过如下方式计算: 如果存在一维坐标是\(0\),则颜色是黑色. ...
- JeeSite4.x 搭建并部署到服务器
1.下载地址:https://gitee.com/thinkgem/jeesite4 2.文档地址:http://jeesite4.mydoc.io/?t=267354 2.1一定要看,都很清晰,没废 ...
- 【HDU5950】Recursive sequence(矩阵快速幂)
BUPT2017 wintertraining(15) #6F 题意 \(f(1)=a,f(2)=b,f(i)=2*(f(i-2)+f(i-1)+i^4)\) 给定n,a,b ,\(N,a,b < ...
- 缺省源和 Vim 配置
缺省源 #include <bits/stdc++.h> #define x first #define y second #define pb push_back #define mp ...
- 【Loj116】有源汇有上下界最大流(网络流)
[Loj116]有源汇有上下界最大流(网络流) 题面 Loj 题解 模板题. #include<iostream> #include<cstdio> #include<c ...
- 工作队列.py
#对列模式图Work Queue背后的主要思想是避免立即执行资源密集型任务的时,需要等待其他任务完成.所以我们把任务安排的晚一些,我们封装一个任务到消息中并把它发送到队列,一个进程运行在后端发送并最终 ...
- hdu 3374 String Problem(kmp+最小表示法)
Problem Description Give you a string with length N, you can generate N strings by left shifts. For ...