Anguar学习之旅----创建和使用服务

创建服务命令  ng g service services/storage

在我们的services目录下创建了stroage.service.ts文件,class初始了类StorageService

所以在app.module.ts 里面引入创建的服务时,名字最好一致

import { StorageService } from './services/storage.service';

服务放在数组   providers: [StorageService], /*定义的服务 回头放在这个里面*/

storage.service.ts  封装存储localstroage

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class StorageService {

  constructor() { }
  set(key, value) {
    localStorage.setItem(key, JSON.stringify(value))
  }
  get(key) {
    return JSON.parse(localStorage.getItem(key))
  }
  remove(key) {
    localStorage.removeItem(key)
  }
}

todolist.component.ts   

import { Component, OnInit } from '@angular/core';
import { StorageService } from '../../services/storage.service'  //引入服务
@Component({
  selector: 'app-todolist',
  templateUrl: './todolist.component.html',
  styleUrls: ['./todolist.component.css']
})
export class TodolistComponent implements OnInit {
  // public storage = new StorageService()  // 可以引入和使用服务,官方不推荐这样
  public username: any
  public list = []
  // private storage:StorageService       依赖注入服务
  constructor(private storage: StorageService) {
    this.username = ''
    // console.log(this.storage)
    // this.storage.set('username', 'angular')
    // alert(this.storage.get('username'))
  }

  ngOnInit() {
    //每次刷新获取storage里面 todolist的值
    var todolist = this.storage.get('todolist');
    if (todolist) {
      this.list = todolist;
    }
  }
  add(e) {
    // alert(this.username) 数据双向绑定可以获取到文本框的值

    // console.log(e)

    //1.从storage获取  todolist的数据

    //2.如果有数据,拿到这个数据,然后把新数据和这个storage数据拼接,重新写入

    //3.如果没有数据  直接给storage写入数据
    if (e.keyCode == 13 || e.type == 'click') {

      let obj = { // 每次增加的对象数据
        username: this.username,
        status: 1
      }
      console.log(e.target.value)
      let todolist = this.storage.get('todolist');
      if (todolist) {
        todolist.push(obj);
        //如果有数据,拿到这个数据,然后把新数据和这个storage数据拼接,重新写入
        this.storage.set('todolist', todolist);
      } else {
        //3.如果没有数据  直接给storage写入数据
        var arr = [];
        arr.push(obj);
        this.storage.set('todolist', arr);
      }
      this.list.push(obj)
    }
  }
  delete(key) {
    this.list.splice(key, 1)
  }
  changeData(key,status) {
    this.list[key].status = status
    this.storage.set('todolist', this.list)
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞朋哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值