Сервис не печатает console.log - PullRequest
0 голосов
/ 30 января 2020

Мне нужно создать службу в моем приложении angular, поэтому я делаю это:

@Injectable({
  providedIn: 'root'
})
export class PropertiesNameService  {

  products: string[] = [];

  constructor(private http: HttpClient) {
    console.log('HI');
    this.http.get('****').subscribe(data => {
    //   console.log(data);
   });
  }
}

И в моем app.module я делаю это:

import {PropertiesNameService} from './propertiesName/properties-name.service';
....

providers: [PropertiesNameService],

Проблема в том, что когда я запускаю приложение и открываю консоль, я не читаю «HI». Я пользуюсь angular 8, кто-нибудь может мне помочь?

Ответы [ 2 ]

5 голосов
/ 30 января 2020

Похоже, что никто до сих пор не использует этот сервис. Имейте компонент с constructor (private propertiesNameService: PropertiesNameService) {}, который будет инстанцировать сервис и запускать его конструктор.

1 голос
/ 30 января 2020

provideIn: 'root' указывает, что Angular должен предоставлять сервис в инжекторе root.

Итак:

Сервис:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'
@Injectable({
  providedIn: 'root'
})
export class ServiceService {

  constructor(private http: HttpClient) {

  }

  onHttp(){
    return   console.log('Message from service');
    // return this.http.get('****')
  }

}

И ваш app.component:

constructor(private service: ServiceService) { <---instantiate the service

 }

 onClick(){
   this.service.onHttp()
 }

 ngOnInit(){
   this.onClick()
 }

https://stackblitz.com/edit/angular-heiywb?file=src%2Fapp%2Fapp.component.ts

Надеюсь, это поможет!

...