TL:DR:尝试使用私有构造函数参数时得到错误Supplied parameters do not match any signatures of call target
,即。 constructor (private http: Http) {}
在Angular2中设置私有参数时遇到了一些麻烦。我曾经想过,当一个属性在构造函数中声明为private时,它不需要传入。这对我来说似乎很奇怪,我猜我对此的理解是错误的,但我找不到任何信息另有建议。这是我的意思的一个例子:
来自https://angular.io/docs/ts/latest/guide/server-communication.html 的 constructor (private http: Http) {}
然后引用http属性,但是我没有看到在其他地方传递任何Http实例。
我试图实现相同的功能,但是我收到以下错误:
Supplied parameters do not match any signatures of call target
,似乎暗示Http实例需要传递给constuctor。
该程序适用于“卡片”的“图库”。这些卡是从使用Http的'CardService'发送的。此代码目前在行mainGallery: Gallery = new Gallery();
import { Component } from '@angular/core';
import { Gallery } from './gallery';
import { CardService } from './card.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [ CardService ]
})
export class AppComponent {
title = 'app works!';
mainGallery: Gallery = new Gallery();
}
以下是Gallery的外观:
@Component({
providers: [CardService]
})
export class Gallery{
cards: Card[] = [];
constructor(private cardService: CardService){
}
}
如果我尝试在卡服务的构造函数中使用private http: Http
,我也会遇到同样的错误。非常感谢任何帮助!
编辑: 这是我的NgModule:
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
答案 0 :(得分:0)
我认为你不能简单地创建一个new Gallery()
,你必须要求相关的注射器为你取一个,因为你没有发送Gallery
&#39 ; s构造函数函数任何参数,这是注入器的工作。
在此处阅读:https://angular.io/docs/ts/latest/guide/dependency-injection.html