在Angular中,默认情况下服务是以单例模式工作的。这意味着每次在应用程序中注入该服务时,都会得到同一个实例。
以下是一个具有单例服务的代码示例:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // 声明服务为根注入器的提供者,以实现单例模式
})
export class MyService {
constructor() { }
doSomething() {
console.log('Doing something...');
}
}
在上面的示例中,@Injectable
装饰器用于将服务标记为可注入的。providedIn: 'root'
表示该服务作为根注入器的提供者,以实现单例模式。
要在组件中使用该服务,只需将其注入到构造函数中即可:
import { Component } from '@angular/core';
import { MyService } from './my.service';
@Component({
selector: 'app-my-component',
template: `...`
})
export class MyComponent {
constructor(private myService: MyService) {
this.myService.doSomething();
}
}
在上面的示例中,MyService
服务被注入到 MyComponent
组件的构造函数中,并在构造函数中调用了 doSomething()
方法。
请注意,即使在多个组件中注入该服务,也只会使用同一个实例,因为默认情况下Angular将其设计为单例模式。