Angular-Loiane-Training

Este repositorio contem exemplos documentados e descricoes dos conteudos estudados ao longo do curso de Angular da Loiane

View project on GitHub

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}`)
  }
}