0

我需要在我的角度应用程序中创建一个服务,所以我这样做:

@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 有人可以帮助我吗?

4

2 回答 2

5

到目前为止,似乎没有人真正使用该服务。有一个带有 的组件constructor (private propertiesNameService: PropertiesNameService) {},它将实例化服务并运行其构造函数。

于 2020-01-30T08:37:15.863 回答
1

providedIn: 'root' 指定 Angular 应该在根注入器中提供服务。

所以:

服务:

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

希望能帮助到你!

于 2020-01-30T08:41:59.053 回答