Implementando um Serviço em Outro Serviço - Angular
É bastante comum a necessidade de utilizar um serviço dentro de outro. Por exemplo, no tema anterior, foi criado um serviço para trabalhar com dados. Mas o que fazer se precisarmos registrar todas as operações realizadas com esses dados? Para esse propósito, criaremos um novo serviço de log. Vamos adicionar um novo arquivo chamado log.service.ts
src/app,
export class LogService {
write(logMessage: string) {
console.log(logMessage);
}
}
O método write
Agora, vamos usar esse serviço no código. Para isso, alteramos o arquivo data.service.ts
import { Injectable } from "@angular/core";
import { LogService } from "./log.service";
@Injectable()
export class DataService {
private data: string[] = ["Tom", "Bob", "Sam"];
constructor(private logService: LogService) {}
getData(): string[] {
this.logService.write("Operação de obtenção de dados");
return this.data;
}
addData(name: string) {
this.data.push(name);
this.logService.write("Operação de adição de dados");
}
}
Para que o serviço possa utilizar outros serviços, aplicamos o decorador @Injectable
Existe uma recomendação geral dos desenvolvedores do Angular para sempre aplicar o @Injectable
DataService
Além disso, como o DataService
LogService
LogService
AppComponent
import { Component } from "@angular/core";
import { FormsModule } from "@angular/forms";
import { DataService } from "./data.service";
import { LogService } from "./log.service";
@Component({
selector: "my-app",
standalone: true,
imports: [FormsModule],
providers: [DataService, LogService],
template: `<div>
<div><input [(ngModel)]="name" />
<button (click)="addItem(name)">Adicionar</button>
</div>
<ul>
@for(item of items; track $index){
<li>{{item}}</li>
}
</ul>
</div>`
})
export class AppComponent {
items: string[] = [];
name: string = "";
constructor(private dataService: DataService){}
addItem(name: string){
this.dataService.addData(name);
}
ngOnInit(){
this.items = this.dataService.getData();
}
}
Mesmo que o LogService
AppComponent
DataService
AppComponent
Ao realizar operações com os dados, o serviço LogService
