在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