Как исправить ошибку, выдаваемую из formGroup как TypeError: Невозможно прочитать свойство 'get' из неопределенного - PullRequest
0 голосов
/ 23 января 2020

Я могу связать другие значения, кроме 3 значений поля ввода в той же форме группы. Он показывает строку ошибки для строк HTML, где я добавил сообщение об ошибке через функцию get от ts.

TS :

get detailsInfo() {
    return this.agentbasicInfoForm.controls;
}

this.agentbasicInfoForm = this.FB.group({
    groupCode: this.agentDetailsList.basicInfo.groupAgent,
    agentCode: [this.agentDetailsList.basicInfo.agentCode, Validators.required],
    agencyType: [this.agentDetailsList.basicInfo.agentType, Validators.required],
})

HTML:

<select class="custom-select" formControlName="agencyType" name="agencyType"
    [ngClass]="{ 'is-invalid': submitted && detailsInfo.agencyType.errors }"
    (change)="SelectedAgentType($event.target.value)">
    <option value=''>Select Agent Type </option>
    <option *ngFor="let agencyType of detailsSelectDropDown?.AgentType" [value]='agencyType.id'>
        {{agencyType.value}}
    </option>
</select>

<div *ngIf="submitted && detailsInfo.agencyType.errors" class="invalid-feedback">
    <div *ngIf="detailsInfo.agencyType.errors.required">Agency Type is required</div>
</div>

TS:

getAllDetails() {
    let params = {
      GroupAgent: this.groupCode,
      agentCode: this.agentCode
    }
    this.agentViewDetailsService.getDetailsTabAllData(params).subscribe((res) => {
      this.agentDetailsList = res.result;
      this.initAllForms()
      console.log(this.agentDetailsList,"all details");
    })
  }

DEMO

enter image description here

1 Ответ

0 голосов
/ 24 января 2020

Большинство

Невозможно прочитать свойство неопределенных ошибок

вызвано из-за неправильной инициализации переменных.

temp : {a:any};

Это объявляет переменная с указанными c типами, но не инициализируется никаким значением. Вы должны инициализировать его отдельно в ngOnInit() или в другом месте, прежде чем использовать его в шаблоне.

temp = {a:"hello"};

Это объявляет переменную и инициализирует ее за один шаг. Я бы порекомендовал это только тогда, когда вам не нужно сильно заботиться о типах переменных. Всегда лучше сначала установить типы (в этом весь смысл TS: D) и инициализировать его позже.

В вашем случае agentDetailsList : {"basicIn...} объявил переменную с некоторыми типами, которые должны были быть значениями вместо инициализации.

Простое изменение значения на agentDetailsList = {"basicIn...} решает проблему.

Рабочая часть: https://stackblitz.com/edit/angular-fhp8j2

...