Мы можем легко вызвать функцию компонента из внедренного сервиса
Посмотрите на этот пример stackblidtz , где функция showAlert
вызывается из сервиса , который мыподписаться и получить результаты :
import { Component } from '@angular/core';
import { IProduct } from './product';
import { ProductService } from './products.service';
import { Http , Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Component ({
selector: 'my-app',
template: '<table border="1"><tr *ngFor="let elem of iproducts"><td>{{ elem.ProductID }}</td><td>{{ elem.ProductName }}</td></tr></table>',
providers: [ProductService]
})
export class AppComponent {
iproducts: IProduct[];
constructor(private _product: ProductService) {
}
ngOnInit() : void {
this._product.getproducts()
.subscribe( (iproducts) => {
this.iproducts = iproducts;
this.showAlert(); //call showAlert function <------
});
}
showAlert() {
console.log('we have the products !');
}
}
Примечание: Намерение службы заключается в том, чтобы внедрить ее в компонент, чтобы мы могли ее использовать и использовать всю бизнес-логикутам и не импортировать компонент в сервис, а вызвать метод компонента в сервисе