Bir Servisin Angular'da Başka Bir Servise Enjekte Edilmesi
Proje üzerinde çalışmak için, işlevselliği genişletmek amacıyla bir servisi başka bir servise enjekte etmemiz gerekebilir. Yeni veri eklendiğinde konsola mesaj yazdıracak başka bir servis daha yapalım.
İlk olarak test/src/app klasöründe
log.service.ts dosyasını oluşturuyoruz.
LogService sınıfını dışa aktaracağız,
içine konsola mesaj yazdırmak için
write fonksiyonunu yazacağız:
import { Injectable } from '@angular/core';
@Injectable()
export class LogService {
write(message: string) {
console.log(message);
}
}
Daha sonra DataService servisimize gidip
yeni servisimizi içe aktaracağız, enjekte
edeceğiz ve kullanacağız:
import { Injectable } from '@angular/core';
import { LogService } from './log.service'; // içe aktarıyoruz
@Injectable()
export class DataService {
private data: string[] = ['a', 'b', 'c'];
constructor(private logService: LogService) { // enjekte ediyoruz
}
getData(): string[] {
this.logService.write('veri alındı'); // kullanıyoruz
return this.data;
}
addData(name: string){
this.data.push(name);
this.logService.write('yeni öğe eklendi'); // kullanıyoruz
}
}
Ancak bu yeterli değil. Doğrudan kullanılmasa bile, yeni servisi bileşen sınıfında da tanımlamak gerekiyor:
import { Component } from '@angular/core';
import {DataService} from './data.service';
import {LogService} from './log.service'; // içe aktarıyoruz
@Component({
........
providers: [DataService, LogService] // ekliyoruz
})