INJETANDO UM SERVICE EM OUTRO SERVICE
A injecao de dependencia entre services e semelhante a injecao de dependencia em components, para exemplificar vamos criar um service responsavel apenas por mostrar uma mensagem no console, vamos chamar essa classe de LogService
.
service que sera injetado:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class LogService {
constructor() { }
consoleLog(msg: string){
console.log(msg)
}
}
retomando o exemplo implementado em Comunicacao entre components usando services (broadcasting) , podemos injetar a classe LogService
na classe ComumService
e chamar o metodo consoleLog()
passando como argumento a mensagem desejada a ser exibida no console.
service que ira receber a injecao de dependencia:
import { Injectable, EventEmitter } from '@angular/core';
import { LogService } from './injetando-service-em-outro-service/log.service'
@Injectable()
export class ComumService {
static emitirCursoCriadoEstatico = new EventEmitter<string>();
cursos: string[] = ['Angular', 'NodeJs']
// injecao de dependencia via construtor
constructor(private logService: LogService) {
console.log('Instancia do Service')
}
getCursos(){
return this.cursos
}
addCurso(curso: string){
ComumService.emitirCursoCriadoEstatico.emit(curso)
// chamada do metodo da dependencia
this.logService.consoleLog(`Criando um novo curso ${curso}`)
}
}