Agregué un nuevo servicio a un proyecto Angular existente con:
$ ng generate service utils/new Ahora traté de mover algunos métodos de AppService a NewService .
Ambos servicios tienen el mismo constructor:
@Injectable({ providedIn: 'root' }) export class AppService { constructor(private http: HttpClient) {}Y
@Injectable({ providedIn: 'root' }) export class NewService { constructor(private http: HttpClient) { } Ahora, en un Component , trato de usar NewService en lugar de AppService (simplemente reemplazo AppService con NewService ).
@Component({ //... }) export class MyComponent implements OnInit { constructor(private newService: NewService) { newService.doSomething(...); } ngOnInit(): void { } Se compila. Pero recibo un error de tiempo de ejecución: ERROR TypeError: n.appService is undefined
No pude entender lo que decía el depurador, así que private appService: AppService al constructor, aunque no se usa en absoluto en el código de MyComponent . Así que ahora tengo esto:
@Component({ //... }) export class MyComponent implements OnInit { constructor(private appService: AppService, private newService: NewService) { newService.doSomething(...); } ngOnInit(): void { }Ahora compila, y tampoco recibo ningún error de tiempo de ejecución.
Esto me parece extraño y contrario a la intuición. ¿Qué me perdí aquí?
¿Necesito algún ajuste de configuración para declarar la existencia de NewService ?
Esto sucedió porque en la vista html de MyComponent había una referencia a un método de AppService . Extrañamente, el proyecto todavía se compiló y solo falló en tiempo de ejecución.
Por lo general, cuando hago referencia en vistas html a entidades que no se reconocen, aparece un error de compilación.