5

我开始学习 Angular 4 并开始使用 HTTP 客户端。现在我正在尝试从组件进行 http 调用(是的,我知道我应该将它转移到服务中,但仍然如此)

但是由于某种原因,当我尝试将 HttpClient 注入到我的组件中时,我得到了下一个错误:

未捕获的错误:无法解析 PromocodeComponent 的所有参数:(?)。

这是我的组件的代码:

import { Ticket } from '../../classes/Ticket.class'
import { Component, Input } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'promocode',
  templateUrl: './promocode.template.html',
  styleUrls: ['./promocode.styles.scss']
})
export class PromocodeComponent {
  @Input() ticket: Ticket;
  state: String = "normal";
  promocode: String = "";

   constructor(private http: HttpClient) {}

  promocodeValidate(event): void{
    console.log(this.promocode);
    console.log(event);
    this.http.get('/promocode/asdasda').subscribe(data => {
      console.log(data);
    });
  }
}

还有我的 app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { MovieBadgeComponent } from './movie-badge/movie-badge.component';
import { TicketComponent } from './ticket/ticket.component';
import { PromocodeComponent} from './promocode/promocode.component';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';


@NgModule({
  declarations: [
    AppComponent,
    MovieBadgeComponent,
    TicketComponent,
    PromocodeComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [ AppComponent ]
})
export class AppModule {}
4

3 回答 3

17

结果,对我来说,我忘记了@Injectable我的服务中的装饰师。在早期的角度(> = 2)中,我记得@Injectable是可选的......猜猜不再?

于 2017-12-15T22:17:25.243 回答
9

结果,我错过了

“emitDecoratorMetadata”:真

在 tsconfig

嗯...

于 2017-10-30T15:38:20.393 回答
1

当我使用 Angular 运行单元测试(一个 spec.ts 文件)时,我遇到了同样的错误。

以下是我所做的:

     import { HttpClientModule, HttpClient } from '@angular/common/http'; 

     beforeEach(async(() => {
       TestBed.configureTestingModule({
         declarations: [ ],
         imports: [
           HttpClientModule
         ],
         schemas: [NO_ERRORS_SCHEMA],
         providers: [
           HttpClient,
         ]
       })
         .compileComponents();
      }));

错误消失了。

于 2019-08-14T20:02:54.330 回答