Внедување на еден сервис во друг во 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] // додаваме
})