Para que serve o providedIn no decorador Injectable ao criar serviços no Angular 6?
Olá a todos! Comecei a estudar Angular 6 e TypeScript, e ao gerar um serviço via CLI, notei algo assim:
```typescript
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() { }
}
```
Antes, no Angular 5, eu simplesmente escrevia `@Injectable()` sem parâmetros, e depois registrava o serviço no módulo na seção `providers`. Agora o CLI gera esse `providedIn: 'root'`. Fiquei um pouco confuso.
Assim que eu fazia antes:
```typescript
// my.service.ts
@Injectable()
export class MyService { }
// app.module.ts
@NgModule({
providers: [MyService]
})
export class AppModule { }
```
E agora a nova abordagem:
```typescript
// my.service.ts
@Injectable({
providedIn: 'root'
})
export class MyService { }
```
Perguntas:
1. O que exatamente faz `providedIn: 'root'`? É apenas uma substituição do registro no módulo?
2. Se eu especificar `providedIn: 'root'`, ainda preciso adicionar o serviço em `providers` do módulo?
3. O que acontece se eu especificar `provid