angular - 如何在 Angular 6 服务中发出 Http 请求

标签 angular typescript angular-services angular-httpclient

这是我的事,我有一个消息服务,我想通过 HTTP 请求(Rest Api)从我的服务器收集数据,如下所示:

import { Sensor } from './sensor.model'
import { HttpClient } from '@angular/common/http';

export class MessageService{
  mqttMessageData : JSON[]=[];
  coapMessageData : JSON[]=[];
  xmppMessageData : JSON[]=[];

  constructor(private httpClient: HttpClient) {

  }
getMqttMessages() {
    this.httpClient.get<JSON>('http://127.0.0.1:5002/messages/mqtt').subscribe(data => {
      this.mqttMessageData.push(data);
      console.log(data);
    });
  }

但我的浏览器控制台出现此错误(ng serve 中没有错误):

Uncaught Error: Can't resolve all parameters for MessageService: (?).
    at syntaxError (compiler.js:1016)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getDependenciesMetadata (compiler.js:10917)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getTypeMetadata (compiler.js:10810)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getInjectableTypeMetadata (compiler.js:11032)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getProviderMetadata (compiler.js:11041)
    at compiler.js:10979
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getProvidersMetadata (compiler.js:10939)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNonNormalizedDirectiveMetadata (compiler.js:10416)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver._getEntryComponentMetadata (compiler.js:11013)

所以我假设 httpClient 有问题,但我不知道如何以其他方式做到这一点。

最佳答案

你需要在服务上添加@Injectable装饰器

import { Injectable } from '@angular/core'

@Injectable()
export class MessageService {
   ...
}

关于angular - 如何在 Angular 6 服务中发出 Http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970430/

相关文章:

angular2 - 引用组件中的 &lt;input&gt; 模板引用变量来更改 value 属性

javascript - 如何在 Typescript 中声明给定大小的多维数组

typescript - 为什么我需要在 Typescript 中输入 cast?

javascript - Angular http post 通过服务将数据返回给组件

angularjs - Angular.Service 与 Angular.Factory

javascript - 仅针对一个 Controller 未定义 Angular 服务字段

iframe - 带有 DomSanitationService 的 iFrame 中的 Angular2 不安全资源 URL

javascript - 在 angular4 的 app.component.ts 文件中使用外部库变量

angular - 如何在不在 url 中的状态之间传递参数?

html - typescript 错误〜类型void中不存在属性〜