全书目录

第二十六篇:Angular 完全指南 —— 企业中控园区宇宙

第六章:Service —— 园区里的公共服务部门,不是页面碎逻辑收容所

1 分钟 195 字 第 467 / 962 个阅读单元

Service 是 Angular 最重要的企业化概念之一。

它像园区里的:

  • 调度中心
  • 审批部门
  • 数据窗口
  • 审计办公室
  • 登录认证中心
  • 报表中心

也就是:多个楼都要用,但不属于某一栋楼本身的能力

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

@Injectable({
  providedIn: 'root',
})
export class BadgePolicyService {
  canEnter(role: string) {
    return role === 'admin' || role === 'security';
  }
}

组件里使用:

ts
import { Component, inject } from '@angular/core';
import { BadgePolicyService } from './badge-policy.service';

@Component({
  selector: 'entry-check',
  standalone: true,
  template: `
    <p>{{ allowed ? '允许通行' : '禁止通行' }}</p>
  `,
})
export class EntryCheckComponent {
  private policy = inject(BadgePolicyService);
  allowed = this.policy.canEnter('admin');
}

要特别建立一个正确心智:

text
组件 = 楼里的界面与交互
服务 = 园区公共能力与业务规则

服务不是“凡是懒得放组件里的代码都扔进去”,而是要满足这几个特征之一:

  • 需要复用
  • 需要独立测试
  • 需要独立注入
  • 需要跨多个组件共享
  • 需要表达一类明确职责