簡體   English   中英

未捕獲(在承諾中):錯誤:沒有String的提供者

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM