• 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);
              }
        }    
    

    减小按钮和增加一样的。

  • 相关阅读:
    文字编码
    各个地区的编码
    Android中调用系统所装的软件打开文件
    Android中检测手机制式和移动网络类型
    Android使用ContentProvide(内容提供者)向其他应用程序共享数据
    windows Phone Push Notification
    解决Android加载图片时内存溢出的问题
    Android 正则表达式
    淡定
    Android简单数据存储类SharedPreferences详解及实例
  • 原文地址:https://www.cnblogs.com/xiaojianwei/p/10093668.html
Copyright © 2020-2023  润新知