Injeksi Satu Layanan ke Layanan Lain di Angular
Untuk bekerja pada proyek, kita mungkin perlu menyuntikkan satu layanan ke layanan lain untuk memperluas fungsionalitasnya. Mari kita buat layanan lain yang akan menampilkan pesan di konsol saat menambahkan data baru.
Pertama, di folder test/src/app buatlah
file log.service.ts. Ekspor kelas
LogService, di mana kita akan menuliskan
fungsi write untuk menampilkan pesan
di konsol:
import { Injectable } from '@angular/core';
@Injectable()
export class LogService {
write(message: string) {
console.log(message);
}
}
Selanjutnya, buka layanan kita DataService
dan impor, injeksi, serta gunakan
layanan baru kita:
import { Injectable } from '@angular/core';
import { LogService } from './log.service'; // mengimpor
@Injectable()
export class DataService {
private data: string[] = ['a', 'b', 'c'];
constructor(private logService: LogService) { // menginjeksi
}
getData(): string[] {
this.logService.write('data received'); // menggunakan
return this.data;
}
addData(name: string){
this.data.push(name);
this.logService.write('new elem added'); // menggunakan
}
}
Namun, ini belum cukup. Perlu juga mendaftarkan layanan baru di kelas komponen, meskipun tidak digunakan secara langsung di sana:
import { Component } from '@angular/core';
import {DataService} from './data.service';
import {LogService} from './log.service'; // mengimpor
@Component({
........
providers: [DataService, LogService] // menambahkan
})