Avatar ·

在Angular 6中创建服务时,Injectable装饰器中的providedIn有什么作用?

大家好!我开始学习Angular 6和TypeScript,通过CLI生成服务时注意到这样一个东西: ```typescript @Injectable({ providedIn: 'root' }) export class MyService { constructor() { } } ``` 以前在Angular 5中,我只是写`@Injectable()`不带任何参数,然后在模块的`providers`部分注册服务。现在CLI生成了这个`providedIn: 'root'`。我有点困惑。 以前我是这样做的: ```typescript // my.service.ts @Injectable() export class MyService { } // app.module.ts @NgModule({ providers: [MyService] }) export class AppModule { } ``` 现在的新方法: ```typescript // my.service.ts @Injectable({ providedIn: 'root' }) export class MyService { } ``` 问题: 1. `providedIn: 'root'`具体做了什么?它只是替代了在模块中注册吗? 2. 如果我指定了`providedIn: 'root'`,还需要在模块的`providers`中添加服务吗? 3. 如果我指定了`provid