ერთი სერვისის მეორეში ინჟექცია Angular-ში
პროექტზე მუშაობისთვის შეიძლება დაგვჭირდეს ერთი სერვისის მეორეში ჩაწერა, რათა გავაფართოვოთ მათი ფუნქციონალი. მოდით შევქმნათ კიდევ ერთი სერვისი, რომელიც ახალ მონაცემთა დამატებისას გამოიტანს შეტყობინებებს კონსოლში.
თავდაპირველად ფოლდერში test/src/app შევქმნათ
ფაილი log.service.ts. ექსპორტირებას ვახდენთ
კლასის LogService, რომელშიც დავწერთ
ფუნქციას write შეტყობინების კონსოლში
გამოსატანად:
import { Injectable } from '@angular/core';
@Injectable()
export class LogService {
write(message: string) {
console.log(message);
}
}
შემდეგ გადავიდეთ ჩვენს სერვისში DataService
და იმპორტირება, ინჟექცია და გამოყენება ვუკეთოთ
ჩვენს ახალ სერვისს:
import { Injectable } from '@angular/core';
import { LogService } from './log.service'; // იმპორტირება
@Injectable()
export class DataService {
private data: string[] = ['a', 'b', 'c'];
constructor(private logService: LogService) { // ინჟექცია
}
getData(): string[] {
this.logService.write('მონაცემები მიღებულია'); // გამოყენება
return this.data;
}
addData(name: string){
this.data.push(name);
this.logService.write('ახალი ელემენტი დაემატა'); // გამოყენება
}
}
თუმცა, ეს საკმარისი არ არის. საჭიროა ახალი სერვისის მითითება კომპონენტის კლასშიც, თუმცა ის იქ პირდაპირ და არ გამოიყენება:
import { Component } from '@angular/core';
import {DataService} from './data.service';
import {LogService} from './log.service'; // იმპორტირება
@Component({
........
providers: [DataService, LogService] // დამატება
})