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