Angular service - это специализированный компонент, который предназначен для того, чтобы предоставлять другим компонентам какие-либо общие данные.
Генерируем сервис, пользуясь Angular CLI
ng g service my-serv1
Получаем его шаблон:
Импортируем его в app.module.ts, чтобы он был доступен всем компонентам проекта
import { MyServ1Service } from './my-serv1.service';
Регистрируем его там же в providers, чтобы можно было его использовать во всех дочерних компонентов через Angular Dependancy Injection
providers: [
MyServ1Service
],
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { CollapseModule } from 'ngx-bootstrap/collapse';
import { PopoverModule } from 'ngx-bootstrap/popover';
import { AppComponent } from './app.component';
import { Comp1Component } from './comp1/comp1.component';
import { MyServ1Service } from './my-serv1.service';
@NgModule({
declarations: [
AppComponent,
Comp1Component
],
imports: [
PopoverModule.forRoot(),
CollapseModule.forRoot(),
BsDropdownModule.forRoot(),
BrowserModule
],
providers: [
MyServ1Service
],
bootstrap: [AppComponent]
})
export class AppModule { }
Добавляем метод getSomething():
Используем в компоненте - без Dependancy injection (не рекомендуется)
Используем в компоненте через Dependency injection (в этом случае constructor (service: MyServ1Service) создаёт внутри класса переменную с именем service , которая является объектом (instance) класса MyServ1Service )
И в app.module.ts добавляем импорт
и
providers: [
MyServ1Service
],
весь файл
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { CollapseModule } from 'ngx-bootstrap/collapse';
import { PopoverModule } from 'ngx-bootstrap/popover';
import { AppComponent } from './app.component';
import { Comp1Component } from './comp1/comp1.component';
import { MyServ1Service } from './my-serv1.service';
@NgModule({
declarations: [
AppComponent,
Comp1Component
],
imports: [
PopoverModule.forRoot(),
CollapseModule.forRoot(),
BsDropdownModule.forRoot(),
BrowserModule
],
providers: [
MyServ1Service
],
bootstrap: [AppComponent]
})
export class AppModule { }