在Angular 7和8中,我们可以使用providedIn: 'root'
为服务提供商提供优化。
在你的服务文件中,添加providedIn: 'root'
属性,如下所示:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class MyService {
// 服务的代码
}
这将告诉Angular将该服务作为根级提供商进行优化。
然后,在需要使用该服务的组件中,只需将其添加到构造函数中就可以使用了,无需再在providers
数组中声明它。
import { Component } from '@angular/core';
import { MyService } from './my.service';
@Component({
selector: 'app-my-component',
template: `
`,
})
export class MyComponent {
constructor(private myService: MyService) {
// 使用myService的代码
}
}
这样做的好处是,Angular将使用树摇(tree shaking)技术自动检测到只有在实际使用服务的组件中才会被引入,避免了无用的代码生成和加载。
请确保在升级到Angular 7或8之前,将所有的服务都更新为使用providedIn: 'root'
属性。