简体   繁体   中英

My Control is not getting value from Model class Angular 6 TS

I'm passing data to my model class when user click on button. Data is going to model class correctly when I console it so it shows me all fields with values but the issue is my input fields is not getting that values, Fields are empty. Kindly share any solution for it. The value are correct in my console but input fields are not getting them.

HTML

<form #form2="ngForm">
                <div class="row">
                  <input type="hidden" name="ID" #ID="ngModel" [(ngModel)]="objCompanyFinancialDetails.ID"
                    class="form-control" />
                  <div class="col-md-4">
                    <div class="form-group">
                      <label>Conversation Date Year</label>
                      <mat-select placeholder="Please Select" name="FDConversationDateYear" class="form-control" #FDConversationDateYear="ngModel"
                      [(ngModel)]="objCompanyFinancialDetails.FDConversationDateYear">
                      <mat-option value="2019">2019</mat-option>
                      <mat-option value="2018">2018</mat-option>
                      <mat-option value="2017">2017</mat-option>
                      <mat-option value="2016">2016</mat-option>
                      <mat-option value="2015">2015</mat-option>
                      <mat-option value="2014">2014</mat-option>
                      <mat-option value="2013">2013</mat-option>
                      <mat-option value="2012">2012</mat-option>
                      <mat-option value="2011">2011</mat-option>
                      <mat-option value="2010">2010</mat-option>
                      <mat-option value="2009">2009</mat-option>
                      <mat-option value="2008">2008</mat-option>
                      <mat-option value="2007">2007</mat-option>
                      <mat-option value="2006">2006</mat-option>
                      <mat-option value="2005">2005</mat-option>
                      <mat-option value="2004">2004</mat-option>
                      <mat-option value="2003">2003</mat-option>
                      <mat-option value="2002">2002</mat-option>
                    </mat-select>
                      <!-- <input name="FDConversationDateYear" class="form-control" #FDConversationDateYear="ngModel"
                        [(ngModel)]="objCompanyFinancialDetails.FDConversationDateYear" />
                      <div class="validation-error" *ngIf="FDConversationDateYear.invalid && FDConversationDateYear.touched">This field is required.</div>  -->

                      <!-- <div class="datepicker-cover">
                      <input class="form-control"  [matDatepicker]="dp" placeholder="Month and Year" [formControl]="date" required>
                        <mat-datepicker-toggle class="datepicker-toggler" matSuffix [for]="dp"></mat-datepicker-toggle>
                        <mat-datepicker #dp
                                        startView="multi-year"
                                        (yearSelected)="chosenYearHandler($event, dp)"
                                        panelClass="example-month-picker">
                        </mat-datepicker>
                      </div> -->
                      <!-- K<div class="validation-error" *ngIf="FDConversationDateYear.invalid && FDConversationDateYear.touched">This field is required.</div>  -->
                    </div>
                  </div> 

                  <div class="col-md-4">
                    <div class="form-group">
                      <label>Conversion Date Month</label>
                      <mat-select placeholder="Please Select" name="FD_Conversion_Date_Month" class="form-control" #FD_Conversion_Date_Month="ngModel"
                      [(ngModel)]="objCompanyFinancialDetails.FD_Conversion_Date_Month">
                      <mat-option value="1">January</mat-option>
                      <mat-option value="2">Febuary</mat-option>
                      <mat-option value="3">March</mat-option>
                      <mat-option value="4">April</mat-option>
                      <mat-option value="5">May</mat-option>
                      <mat-option value="6">June</mat-option>
                      <mat-option value="7">July</mat-option>
                      <mat-option value="8">August</mat-option>
                      <mat-option value="9">September</mat-option>
                      <mat-option value="10">October</mat-option>
                      <mat-option value="11">November</mat-option>
                      <mat-option value="12">December</mat-option>
                    </mat-select>
                      <!-- <input name="FD_Conversion_Date_Month" class="form-control" #FD_Conversion_Date_Month="ngModel"
                        [(ngModel)]="objCompanyFinancialDetails.FD_Conversion_Date_Month" /> -->

                       <!-- <div class="validation-error" *ngIf="FD_Conversion_Date_Month.invalid && FD_Conversion_Date_Month.touched">This field is required.</div>  -->
                    </div>
                  </div>
                  <div class="col-md-4">
                    <div class="form-group">
                      <label>Financials Year End Date</label>
                        <div class="datepicker-cover">
                          <input name="FD_Financials_year_end_date" #FD_Financials_year_end_date="ngModel"
                        [(ngModel)]="objCompanyFinancialDetails.FD_Financials_year_end_date" class="form-control"
                        required [matDatepicker]="picker2"/>
                            <mat-datepicker-toggle class="datepicker-toggler" [for]="picker2"></mat-datepicker-toggle>
                            <mat-datepicker #picker2></mat-datepicker>
                          </div>
                      <!-- <div class="validation-error" *ngIf="FD_Financials_year_end_date.invalid && FD_Financials_year_end_date.touched">This field is required.</div> -->
                    </div>
                  </div>
</form>

Component.ts //Method for getting ID onclick

updateFinancialDetailsbyCompID(CompanyID: number){
    this.companyFinancialDetailsService.GetAllbyCompID(CompanyID).subscribe(res => {
      this.objCompanyFinancialDetails = res;
      console.log(this.objCompanyFinancialDetails);
    });;
  }

onclick method

populateItem(element) {
    this.updateFinancialDetailsbyCompID(element.ID);
  }

This in callback functions is not necessarily the same. try

updateFinancialDetailsbyCompID(CompanyID: number){
  let self = this;
  self.companyFinancialDetailsService.GetAllbyCompID(CompanyID).subscribe(
    res => {
      self.objCompanyFinancialDetails = res;
      console.log(self.objCompanyFinancialDetails);
    }
  );
}

You can use FormGroup via FormBuilder. for an example;

testForm: FormGroup;

constructor(private _formBuilder: FormBuilder, private _demoService: DemoService) {

    this.testForm = this.createForm();

}

private createForm(): FormGroup { 
     return this._formBuilder.group({
           Name: [null, Validators.required],
           Lastname: [null, Validators.requider]
     });
}

updateForm(): void {

      this._demoService.getFormValues().subscribe((response) => {

           this.testForm.controls['Name'].setValue(response.Name);
           this.testForm.controls['Lastname'].setValue(response.Lastname);

      });

}

here is html template;

<form name="testForm"   [formGroup]="testForm">

    <mat-form-field>
            <mat-label>Name</mat-label>
            <input  type="text"
                    matInput
            formControlName="Name">
    </mat-form-field>

    <mat-form-field>
            <mat-label>Lastname</mat-label>
            <input  type="text"
                    matInput
            formControlName="Lastname">
    </mat-form-field>

</form>

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM