⊗jsagPmSvITS 77 of 97 menu

Внедряване на един сервис в друг в 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('data received'); // използваме return this.data; } addData(name: string){ this.data.push(name); this.logService.write('new elem added'); // използваме } }

Това обаче не е достатъчно. Трябва също да се добави новият сервис и в класа на компонента, въпреки че той не се използва директно там:

import { Component } from '@angular/core'; import {DataService} from './data.service'; import {LogService} from './log.service'; // импортираме @Component({ ........ providers: [DataService, LogService] // добавяме })
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне