[英]Uncaught (in promise): Error: No provider for String
我是angular2的新手,我遇到了這個錯誤。 我有這樣的課
@Injectable()
export class VehicleDetails {
constructor(private policynumber: string, private vinnumber: string) {
this.policyNumber = policynumber,
this.vinNumber = vinnumber
}
policyNumber: string;
vinNumber: string;
}
和另一個這樣的課
export class Policy {
constructor() {
}
emailAddress: string;
vehicleDetails: VehicleDetails[]
}
我已經在這樣的模塊中導入了我的課程
import { Policy } from './models/Policy';
import { VehicleDetails } from './models/VehicleDetails';
@NgModule({
declarations: [
LienholderComponent,
AppComponent,
PolicyVehicleComponent
],
imports: [
RouterModule.forRoot(
APP_ROUTES,
{ enableTracing: true } // <-- debugging purposes only
),
BrowserModule,
FileUploadModule,
ReactiveFormsModule,
HttpModule
],
providers: [Policy, VehicleDetails],
bootstrap: [AppComponent]
})
export class AppModule { }
當我在VehicleDetails類中注釋我的構造函數時一切正常,但是當我使用構造函數時,我開始得到這個錯誤。 如何解決這個錯誤,我在構造函數中有兩個字符串參數,因為我想動態添加值。
我的錯誤就是這個
我想要實現像這樣構建VehicleDetails類
this.policy.emailAddress='email@test.com';
this.policy.vehicleDetails.push(new VehicleDetails('valueA1','valueA2'));
this.policy.vehicleDetails.push(new VehicleDetails('valueB1','valueB2'));
this.policy.vehicleDetails.push(new VehicleDetails('valueC1','valueC2'));
所以,我動態獲取值,我想將值綁定到模型,如上面的代碼所述
DI無法創建VehicleDetails
的實例,因為它沒有任何關於private policynumber: string, private vinnumber: string
傳遞的信息private policynumber: string, private vinnumber: string
你可以做的是使用@Inject()
裝飾器
constructor(@Inject('policy') private policynumber: string, @Inject('vin') private vinnumber: string) {
並提供像這樣的值
providers: [Policy, VehicleDetails, {provide: 'policy', useValue: 'abc'}, {provide: 'vin', useValue: 'def'}],
根據您的問題更新,您不需要@Injectable
裝飾器。 將您的VehicleDetails更改為:
export class VehicleDetails {
constructor(policynumber: string, vinnumber: string) {
this.policyNumber = policynumber,
this.vinNumber = vinnumber
}
policyNumber: string;
vinNumber: string;
}
並從AppModule
提供程序中刪除VehicleDetails
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.