参数与构造函数

时间:2016-11-15 11:10:24

标签: javascript angular

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]
})

1 个答案:

答案 0 :(得分:0)

我认为你不能简单地创建一个new Gallery(),你必须要求相关的注射器为你取一个,因为你没有发送Gallery&#39 ; s构造函数函数任何参数,这是注入器的工作。

在此处阅读:https://angular.io/docs/ts/latest/guide/dependency-injection.html