Service 是 Angular 最重要的企业化概念之一。
它像园区里的:
- 调度中心
- 审批部门
- 数据窗口
- 审计办公室
- 登录认证中心
- 报表中心
也就是:多个楼都要用,但不属于某一栋楼本身的能力。
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class BadgePolicyService {
canEnter(role: string) {
return role === 'admin' || role === 'security';
}
}组件里使用:
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');
}要特别建立一个正确心智:
组件 = 楼里的界面与交互
服务 = 园区公共能力与业务规则服务不是“凡是懒得放组件里的代码都扔进去”,而是要满足这几个特征之一:
- 需要复用
- 需要独立测试
- 需要独立注入
- 需要跨多个组件共享
- 需要表达一类明确职责