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的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...
随机推荐
- HDU2204 Eddy's爱好
题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数. 解析:一个数N 开K次根后得到M 则小于M的所有数的K次方一定小于N 因为任何一个合数都能分解为素数的乘积 所 ...
- Codeforces Round #530 (Div. 2) A,B,C,D
A. Snowball 链接:http://codeforces.com/contest/1099/problem/A 思路:模拟 代码: #include<bits/stdc++.h> ...
- requirements文件
将一个环境中安装的所有的包在另一个环境中安装 1.生成文件列表 pip freeze > requirements.txt 2.将该文件放入到新环境中,安装 pip install -r req ...
- Android 简单调用摄像头
IDE: android studio3.1.2 界面: activity_main2.xml
- 【Nowcoder71E】组一组(差分约束,最短路)
[Nowcoder71E]组一组(差分约束,最短路) 题面 Nowcoder 题解 看到二进制显然就直接拆位,那么区间的按位或和按位与转成前缀和之后,可以写成两个前缀和的值的差的大小关系,那么直接差分 ...
- 【CF891C】Envy(最小生成树)
[CF891C]Envy(最小生成树) 题面 Codeforces 洛谷 题解 考虑\(MST\)的构建过程,对于所有权值相同的边一起考虑. 显然最终他们连出来的结果是固定的. 把连边改为把联通块联通 ...
- 【原创】hdu1698 Just a Hook(线段树→区间更新,区间查询)
学习线段树第二天,这道题属于第二简单的线段树,第一简单是单点更新,这个属于区间更新. 区间更新就是lazy思想,我来按照自己浅薄的理解谈谈lazy思想: 就是在数据结构中,树形结构可以线性存储(线性表 ...
- python列表转字符串
temp = "".join(sorted(arr[i])) arr[i] = temp
- 老铁,告别postman,用pycharm来调接口,顺便把接口脚本也写了
最近,一位同事在用postman调涉及到依赖的接口的时候 postman设置了环境变量,但是老是获取不到依赖接口返回的值,至于的啥原因呢,@#¥%……&*()! 其实,用pycharm一样可以 ...
- LOJ#6282. 数列分块入门 6
一个动态的插入过程,还需要带有查询操作. 我可以把区间先分块,然后每个块块用vector来维护它的插入和查询操作,但是如果我现在这个块里的vector太大了,我可能的操作会变的太大,所以这时候我需要把 ...