Почему я получаю сообщение «ОШИБКА в файле src / app / component.service.ts (9,29): ошибка TS2304: не удается найти имя« Http ».» в угловых? - PullRequest
0 голосов
/ 20 мая 2019

Я использую Angular 7, и у меня есть эта структура папок

src
    app
        app.component.css  
        app.component.html  
        app.component.spec.ts  
        app.component.ts    
        app.module.ts  
        component.service.spec.ts  
        component.service.ts

В моем файле src / app / component.service у меня есть

import { Injectable } from '@angular/core';
import { HttpModule } from '@angular/http';

@Injectable({
  providedIn: 'root'
})
export class ComponentService {
  private apiUrl = 'http://localhost:8080/todo/';
  constructor(private http: Http) {
  }

  findAll(): Promise<Array<AppComponent>> {
    return this.http.get(this.apiUrl + "/list")
      .toPromise()
      .then(response => response.json() as Todo[])
      .catch(this.handleError);
  }
...

, но я неоднократнополучить ошибку импорта

ERROR in src/app/component.service.ts(9,29): error TS2304: Cannot find name 'Http'.

Я включаю HttpModule в свой сервис, так что еще мне не хватает, чтобы правильно включить это?

1 Ответ

1 голос
/ 20 мая 2019

Ваша проблема в том, что вы не импортировали класс Http, который вводите в своем конструкторе.

Но вместо этого вы должны знать, что начиная с Angular 4.3 мы получили HttpClientкласс как улучшение класса Http.

Вы должны импортировать HttpClient вместо Http из @angular/common/http

, т. е.

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class ComponentService {
  private apiUrl = 'http://localhost:8080/todo/';
  constructor(private http: HttpClient) {
  }

  findAll(): Promise<Array<AppComponent>> {
    return this.http.get(this.apiUrl + "/list")
      .toPromise()
      .then(response => response.json() as Todo[])
      .catch(this.handleError);
  }
...
...