默认情况下,Angular CLI 命令 ng generate service
会通过给 @Injectable()
装饰器添加 providedIn: 'root'
元数据的形式,用根注入器将你的服务注册成为提供者。
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class HeroService {
constructor() { }
}
当你在顶层提供该服务时,Angular 就会为 HeroService
创建一个单一的、共享的实例,并把它注入到任何想要它的类上。
在 @Injectable
元数据中注册该提供者,还能允许 Angular 通过移除那些完全没有用过的服务来进行优化。
缺点
Service
比较灵活,可以存放数据,但是数据是公开出去的,难免会不轻易间就在组件中直接操作 Service
中的数据了