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中的服务的更多相关文章

  1. Angular中的服务的使用

    定义公共的方法,使得方法在组件之间共享调用 1. 创建服务命令 ng g service modbus-service # 创建服务到指定目录下 ng g service services/modbu ...

  2. angular中的服务和持久化实现

    1.创建服务: ng g service my-new-service 创建到指定目录下面 ng g service services/storage 2.app.module.ts 里面引入创建的服 ...

  3. angular源码分析:angular中的依赖注入式如何实现的

    一.准备 angular的源码一份,我这里使用的是v1.4.7.源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装 二.什么是依赖注入 据我所知,依赖注入 ...

  4. 在 Angular 中实现搜索关键字高亮

    在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...

  5. Angular JS 中的服务注册方法

    在Angular JS中创建服务的几种方法 factory() service() constant() value() provider() factory(name,fn(){}) 该服务为单例的 ...

  6. Angular中怎样创建service服务来实现组件之间调用公共方法

    Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...

  7. Angular中ngCookies模块介绍

    1.Cookie介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短 ...

  8. Deferred在jQuery和Angular中的使用与简单实现

    Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Ang ...

  9. angular源码分析:angular中脏活累活的承担者之$interpolate

    一.首先抛出两个问题 问题一:在angular中我们绑定数据最基本的方式是用两个大括号将$scope的变量包裹起来,那么如果想将大括号换成其他什么符号,比如换成[{与}],可不可以呢,如果可以在哪里配 ...

随机推荐

  1. P1508 Likecloud-吃、吃、吃

    数字金字塔3条路 f[i][j]=max(max(f[i-1][j],f[i-1][j-1]),f[i-1][j+1])+a[i][j]; #include<bits/stdc++.h> ...

  2. UOJ276 [清华集训2016] 汽水 【二分答案】【点分治】【树状数组】

    题目分析: 这种乱七八糟的题目一看就是点分治,答案有单调性,所以还可以二分答案. 我们每次二分的时候考虑答案会不会大于等于某个值,注意到系数$k$是无意义的,因为我们可以通过转化使得$k=0$. 合并 ...

  3. 第一天:学会如何在pycharm上编写第一条robotframework用例

    ---恢复内容开始--- 1.python环境的安装和依赖包的下载

  4. 【XSY2753】Lcm 分治 FWT FFT 容斥

    题目描述 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的\(lcm\)为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\leq ...

  5. 【UVALive - 6534 】Join two kingdoms (树的直径的期望)

    bupt spring training for 2015 #2nd J 题意 给两棵树,分别有 n,m 个节点(1 ≤ N, Q ≤ 4 × 10^4),等概率连接属于不同树的两个节点,求新树的直径 ...

  6. 清理XFCE4卸载残留

    apt-get remove xfce4 apt-get remove xfce4* apt-get autoremove apt-get autoclean apt-get clean --- 更新 ...

  7. centos7搭建ELK Cluster集群日志分析平台(三):Kibana

    续  centos7搭建ELK Cluster集群日志分析平台(一) 续  centos7搭建ELK Cluster集群日志分析平台(二) 已经安装好elasticsearch 5.4集群和logst ...

  8. Windows cmd命令

    运行操作 CMD命令锦集       1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个监测网络中DN ...

  9. 通过jpa getResultList 获取查询到的内容

    String sql = "select * from spatial_event "; Query query = em.createNativeQuery(sql); // q ...

  10. 解题:HAOI2018 苹果树

    题面 统计贡献,每个大小为i的子树贡献就是$i(n-i)$,然后子树里又有$i!$种:同时这个子树的根不确定,再枚举这个根是$r$个放的,又有了$r!$种.子树内选点的方式因为子树的根被钦定了顺序所以 ...