¿Para qué sirve providedIn en el decorador Injectable al crear servicios en Angular 6?
¡Hola a todos! Empecé a estudiar Angular 6 y TypeScript, y al generar un servicio mediante CLI noté algo:
```typescript
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() { }
}
```
Antes, en Angular 5, simplemente escribía `@Injectable()` sin parámetros, y luego registraba el servicio en el módulo en la sección `providers`. Ahora el CLI genera este `providedIn: 'root'`. Estoy un poco confundido.
Así lo hacía antes:
```typescript
// my.service.ts
@Injectable()
export class MyService { }
// app.module.ts
@NgModule({
providers: [MyService]
})
export class AppModule { }
```
Y ahora el nuevo enfoque:
```typescript
// my.service.ts
@Injectable({
providedIn: 'root'
})
export class MyService { }
```
Preguntas:
1. ¿Qué hace exactamente `providedIn: 'root'`? ¿Es solo un reemplazo del registro en el módulo?
2. Si especifico `providedIn: 'root'`, ¿aún necesito agregar el servicio en `providers` del módulo?
3. ¿Qué pasa si especifico `provid