Здесь много проблем с соглашениями, но давайте остановимся на основном вопросе.
Вы используете vmmodel
до его инициализации.
<input #currencyDetail.Name="ngModel" [(ngModel)]="paymentService.vmmodel.currencyDetail.Name" class="form-control">
Только при сбросе вы инициализируете значение для него. То, что ваш код пытается сделать, это доступ paymentService.vmmodel.currencyDetail.Name
. Другими словами, он не может прочитать значение ...vmmodel.currencyDetail
, потому что vmmodel - undefined
.
Прочтите разницу между null и undefined .
Когда форма "создана", input
заполняется любым значениемв ngModel
.
Вы можете использовать переменную со значениями по умолчанию или использовать оператор coalease.
Тем не менее, вы должны создать минимальную воспроизводимость вашей проблемы, чтобы мы могли начать откуда-нибудь.
РЕДАКТИРОВАТЬ
export class AppComponent {
name = 'Angular';
vmmodel = new Vmmodel(); // as simple as that. This is still going to have problems as inner properties are not initialized neither and paymentService is undefined as well.
resetForm(form? : NgForm): any {
if(form!=null)
form.reset();
this.vmmodel ={
currencyDetail:new CurrencyDetail(),
goldDetail:new GoldDetail(),
// AcBankAccountHolders:null
}
}
}