typescript - Ionic Angular NgModel hatası: arayüzde bir alt nesneye referans vermek


Bu benim arayüzüm:

rezervasyon.arayüz.ts

export interface Booking {
  "dateBooking": Date;
  "period": {
    "morning": boolean;
    "afternoon": boolean;
    "night": boolean;
  }
}

addbooking.ts

...
import { Booking } from '../../models/booking/booking.interface';
...
export class AddbookingPage {

  //declare a property of interface type
  public booking = {} as Booking;

   constructor() {
  }
...

Görünümde booking.period.morning öğesine veya period nesnemin herhangi bir alt özelliğine başvurmaya çalıştığımda, Ionic bir hata verir:

addbooking.html

  <ion-item>
    <ion-label>Morning</ion-label>
    <ion-checkbox [(ngModel)]="booking.period.morning"></ion-checkbox> 
  </ion-item>

Hata :

TypeError: undefined is not an object (evaluating '_co.booking.period.morning')

Bir onay kutusu uygulamaya çalışıyorum ve verileri Firebase'de kaydetmek istiyorum. Bunu başarmanın başka bir yolu varsa önerilere açığım.

Cevap #1

Ya şunu yapmanız gerekiyor:

Nesnenizi arayüzünüzle eşleşecek şekilde başlatın

public booking: Booking = {
  dateBooking: new Date(),
  period: {
   morning: true,
   afternoon: false,
   night: false, 
  }  
}

veya nesne period.morning özelliğine sahip olana kadar onay kutusunu gizle.

<ion-item>
  <ion-label>Morning</ion-label>
  <ion-checkbox *ngIf="booking && booking.period && typeof booking.period.morning === 'boolean'" [(ngModel)]="booking.period.morning"></ion-checkbox> 
</ion-item>