Angular 2 DI не может разрешать параметры, клиентский модуль HTTP

Я учусь использовать Angular 2 и дошел до того, что застрял с ошибкой ниже. Это появляется только после добавления httpClientModule и попытки сделать http-запрос на получение из компонентов ngInit. Приложение использует angular 4.3.4.

Can't resolve all parameters for BlogComponent: (?).

содержимое app.module.ts

    import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { HttpClientModule } from '@angular/common/http';


import { AppComponent } from './app.component';
import { BlogComponent } from './blog.component';
import { HomeComponent } from './home.component';


import { appRoutes } from './routes'

@NgModule({
  imports: [
    BrowserModule,
    HttpClientModule,
    RouterModule.forRoot(appRoutes)
  ],
  declarations: [
    AppComponent,
    BlogComponent,
    HomeComponent
  ],
  bootstrap: [AppComponent],

})
export class AppModule { }

содержимое файла ts компонента блога, который вызывает ошибку

import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';


@Component({
  selector: 'test-blog',
  template: '<h1>Blog page :)</h1>',
})
export class BlogComponent implements OnInit{

  results: string[];

  constructor(private http: HttpClient) {}

  ngOnInit(): void {
    // Make the HTTP request:
    this.http.get('/api/blog/all').subscribe(data => {
      // Read the result field from the JSON response.
      this.results = data['results'];
    });
  }
}

person Andrew    schedule 03.11.2017    source источник
comment
Там нет ничего явно неправильного, не могли бы вы привести минимально воспроизводимый пример с плункером?   -  person jonrsharpe    schedule 03.11.2017
comment
да, я посмотрю на создание плункера, если ничего очевидного не выделяется. Это поставило меня в тупик целую вечность.   -  person Andrew    schedule 04.11.2017
comment
@ Андрей, я столкнулся с той же проблемой, повезло с этим?   -  person Seb    schedule 03.01.2018


Ответы (2)



Согласно этому руководству, в вашем компоненте может отсутствовать @Injectable().

Пожалуйста, попробуйте это:

import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';


@Component({
  selector: 'test-blog',
  template: '<h1>Blog page :)</h1>',
})

@Injectable()
export class BlogComponent implements OnInit{

results: string[];

constructor(private http: HttpClient) {}

    ngOnInit(): void {
    // Make the HTTP request:
    this.http.get('/api/blog/all').subscribe(data => {
      // Read the result field from the JSON response.
      this.results = data['results'];
        });
    }
}
person DeckerCHAN    schedule 26.11.2017
comment
Вы уже получили это бесплатно с помощью декоратора Component (@Component). - person Kirk Larkin; 26.11.2017