Ошибка типа: Не удается прочитать свойства неопределенного (чтение «вентилятор»)

#angular #typescript #interface #components #undefined

Вопрос:

Это файл шаблона родительского компонента. Это не создает никаких проблем

app.component.html

 <div>

  <input type="text" [(ngModel)]="electronics.light" name="light" placeholder="light">
  <input type="text" [(ngModel)]="electronics.fan" name="fan" placeholder="fan">
  

</div>
<button (click)="display();">Display</button>
<div *ngIf="flag">
  <app-electronics-layout [images]="images" [electronicsObj]="electronics"></app-electronics-layout>
</div>
 

Это часть файла ts дочернего компонента, в которой метод display1() вызывается при нажатии кнопки для проверки значения вентилятора электроники.

   @Input()
  electronicsObj!: electronics;

  display1(){
    console.log(this.electronics.fan);  //This is printing actual value input by user.
}

  myConfigurations:ElectronicsInterface = {
    fan: this.electronics.fan,     //this is giving TypeError
    light: this.electronics.light
  }

 


}
 

Ответ №1:

electronics не определяется при попытке доступа к нему, поэтому у вас есть эта ошибка.

Чтобы убедиться, что вы создадите свои настройки, как только значение будет задано родителем, вы можете инициализировать его с помощью установщика :

 private _electronicsObj: electronics;

get electronicsObj() {
    return this._electronicsObj;
}

@Input() set electronicsObj(electronicsObj: electronics) {
    this._electronicsObj = electronicsObj;
    this.myConfigurations = {
        fan: electronicsObj.fan,
        light: electronicsObj.light
    }
}