在Angular中使用Service

举报
Jet Ding 发表于 2020/09/30 17:29:53 2020/09/30
【摘要】 Service不仅仅是数据获取模块,同时也是非常简单容易的数据共享模块。下面是是一个Service的定义:board.service.tsimport { Injectable } from '@angular/core';import { HttpClient } from '@angular/common/http';@Injectable({ providedIn: 'root' ...

Service不仅仅是数据获取模块,同时也是非常简单容易的数据共享模块。

下面是是一个Service的定义:

board.service.ts


import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';



@Injectable({ 
  providedIn: 'root' 
}) 
export class BoardService { 
  constructor(private httpHttpClient) { } 

  backlog = []; 
  todo = [ 
    'Task 1', 
    'Task 2', 
    'Task 3' 
  ]; 

  inProgess = [ 
    'Task 4', 
    'Task 5', 
  ]; 

  done = [ 
    'Task 6', 
    'Task 7', 
    'Task 8', 
    'Task 9' 
  ]; 

  boards = [ 
    {id: 1name: "Board 1"}, 
    {id: 2name: "Board 2"}, 
    {id: 3name: "Board 3"}, 
  ]; 

  checkInvalidName(namestring): boolean { 
    if(this.todo.findIndex(x=>x.toLowerCase() == name.toLowerCase()) != -1){ 
      return true; 
    } 
    if(this.inProgess.findIndex(x=>x.toLowerCase() == name.toLowerCase()) != -1){ 
      return true; 
    } 
    if(this.done.findIndex(x=>x.toLowerCase() == name.toLowerCase()) != -1){ 
      return true; 
    } 
    return false; 
     
  } 
   
  checkInvalidBoardName(namestring): boolean { 
    if(this.boards.findIndex(x=>x.name.toLowerCase() == name.toLowerCase()) != -1){ 
      return true; 
    } 
   
    return false; 
     
  } 

  addBoard(namestring) { 
    return  this.http.post<any>('/api/board', { name: name }); 
  } 

  addTask(boardIdnumbernamestring) { 
    return  this.http.post<any>('/api/task', { boardId: boardIdname: name }); 
  } 
    
  getBoards() { 
    return  this.http.get<any>('/api/board'); 
  } 

}


使用例子:



export class BoardComponent extends BaseComponent implements OnInit {
  constructor(public dialogMatDialogprivate boardServiceBoardService) {
    super();
  }



  ngOnInit(): void { 
    this.backlog = this.boardService.backlog; 
    this.todo = this.boardService.todo; 
    this.inProgess = this.boardService.inProgess; 
    this.done = this.boardService.done; 
    this.subspritions.push(this.boardService.getBoards().subscribe(x=>{ 
      this.boards = x; 
      if(this.boards.length > 0) { 
        this.currentBoardId = this.boards[0].id; 
        this.currentBoard = this.boards[0]; 
      } 
    })); 
  } ...


可以在多个组件中使用:


export class AddBoardComponent {



  constructor(@Inject(MAT_DIALOG_DATApublic dataanypublic dialogRefMatDialogRef<AddBoardComponent>,private boardServiceBoardService) { 

  }

  private isInvalidName = false;
  closeDialogOk() {
    // check unique
    this.isInvalidName = this.boardService.checkInvalidBoardName(this.data.name);
    if(this.isInvalidName) {
      return;
    }
    this.dialogRef.close(this.data.name);
  }

... 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。