I am new to angular2 and i am stuck with this error. I have a class like this
@Injectable()
export class VehicleDetails {
constructor(private policynumber: string, private vinnumber: string) {
this.policyNumber = policynumber,
this.vinNumber = vinnumber
}
policyNumber: string;
vinNumber: string;
}
and another class like this
export class Policy {
constructor() {
}
emailAddress: string;
vehicleDetails: VehicleDetails[]
}
i have imported my class in the modules like this
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 { }
when i comment my constructor in the VehicleDetails class everything works fine, but when i use the contructor, i start to get this error. how to resolve this error, i have two string parameter in the constructor because i would like to add the values dynamically .
my error is this
What i want to achieve constructing the VehicleDetails class like this is
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'));
so, i am getting the value dynamically and i want to bind the values to the model as explained in the above code
DI can't create an instance of VehicleDetails
because it doesn't have any information about what to pass for private policynumber: string, private vinnumber: string
What you can do is to use the @Inject()
decorator
constructor(@Inject('policy') private policynumber: string, @Inject('vin') private vinnumber: string) {
and provide the values like
providers: [Policy, VehicleDetails, {provide: 'policy', useValue: 'abc'}, {provide: 'vin', useValue: 'def'}],
You dont need the @Injectable
decorator according to your question update. Change your VehicleDetails to this:
export class VehicleDetails {
constructor(policynumber: string, vinnumber: string) {
this.policyNumber = policynumber,
this.vinNumber = vinnumber
}
policyNumber: string;
vinNumber: string;
}
and remove VehicleDetails
from your AppModule
providers.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.