1

財產「推」我有問題,當上打字稿用推法,在這裏
細節這是我的預約模式組件的代碼:無法讀取的不確定

guestArray=[1, 2, 3, 4, 5, 6]; 
guests: number; 
isDateTime: boolean = false; 

constructor(private params: ModalDialogParams, 
    private page: Page) { 

     if(params.context === "guest") { 
      this.isDateTime = false; 
     } 
     else if(params.context === "date-time") { 
      this.isDateTime = true; 
     } 
} 

ngOnInit() { 

    if (this.isDateTime) { 
     let datePicker: DatePicker = <DatePicker>this.page.getViewById<DatePicker>('datePicker'); 

     let currentdate: Date = new Date(); 
     datePicker.year = currentdate.getFullYear(); 
     datePicker.month = currentdate.getMonth() + 1; 
     datePicker.day = currentdate.getDate(); 
     datePicker.minDate = currentdate; 
     datePicker.maxDate = new Date(2045, 4, 12); 

     let timePicker: TimePicker = <TimePicker>this.page.getViewById<TimePicker>('timePicker'); 
     timePicker.hour = currentdate.getHours(); 
     timePicker.minute = currentdate.getMinutes(); 
    } 
} 

public submit() { 
    if (this.isDateTime) { 
     let datePicker: DatePicker = <DatePicker>this.page.getViewById<DatePicker>('datePicker'); 
     let selectedDate = datePicker.date; 
     let timePicker: TimePicker = <TimePicker>this.page.getViewById<TimePicker>('timePicker'); 
     let selectedTime = timePicker.time; 
     let reserveTime = new Date(selectedDate.getFullYear(), 
            selectedDate.getMonth(), 
            selectedDate.getDate(), 
            selectedTime.getHours(), 
            selectedTime.getMinutes()); 
     this.params.closeCallback(reserveTime.toISOString()); 
    } 
    else { 
     let picker = <ListPicker> this.page.getViewById<ListPicker>('guestPicker'); 
     this.params.closeCallback(this.guestArray[picker.selectedIndex]) 
    } 
} 

`

提交後返回預訂組件的結果在這裏處理是它們的代碼。

reservation: FormGroup; 
formReservation: View; 
formResult: View; 
docId: string = "reservations"; 
doc: any; 
db:any; 

constructor(private changeDetectorRef: ChangeDetectorRef, 
    private formBuilder: FormBuilder, 
    private modalService: ModalDialogService, 
    private vcRef: ViewContainerRef, 
    private page: Page, 
    private couchbaseService: CouchbaseService) { 
    super(changeDetectorRef); 

    this.reservation = this.formBuilder.group({ 
     guests: 3, 
     smoking: false, 
     dateTime: ['', Validators.required] 
    }); 
    this.doc = this.couchbaseService.getDocument(this.docId); 
} 
createModalView(args) { 

    let options: ModalDialogOptions = { 
     viewContainerRef: this.vcRef, 
     context: args, 
     fullscreen: false 
    }; 

    this.modalService.showModal(ReservationModalComponent, options) 
     .then((result: any) => { 
      if (args === "guest") { 
       this.reservation.patchValue({ guests: result }); 
      } 
      else if (args === "date-time") { 
       this.reservation.patchValue({ dateTime: result }); 
      } 
     }); 

} 

ngOnInit() { 
    this.formReservation = <View>this.page.getViewById<View>("form_reservation"); 
    this.formResult = <View>this.page.getViewById<View>("form_result"); 

    this.formResult.animate({ 
     opacity: 0, 
     scale: { x: 0.5, y: 0.5 }, 
     duration: 0 
    }) 
} 

onSmokingChecked(args) { 
    let smokingSwitch = <Switch>args.object; 
    if (smokingSwitch.checked) { 
     this.reservation.patchValue({ smoking: true }); 
    } 
    else { 
     this.reservation.patchValue({ smoking: false }); 
    } 
} 

onGuestChange(args) { 
    let textField = <TextField>args.object; 

    this.reservation.patchValue({ guests: textField.text }); 
} 

onDateTimeChange(args) { 
    let textField = <TextField>args.object; 

    this.reservation.patchValue({ dateTime: textField.text }); 
} 

onSubmit() { 
    console.log(JSON.stringify(this.reservation.value)); 
    let reservationArr : Array<object>; 

    reservationArr.push(this.reservation.value); 
    console.log(JSON.stringify(reservationArr)); 

    this.formReservation.animate({ 
     opacity: 0, 
     scale: { x: 0.5, y: 0.5 }, 
     duration: 500 
    }).then(() => this.formResult.animate({ 
     opacity: 1, 
     scale: { x: 1, y: 1 }, 
     duration: 500 
    })); 

    if (this.doc == null) { 
     console.log("This is the first reservation"); 
     this.couchbaseService.createDocument({ "guests": this.reservation.value.guests, "smoking": this.reservation.value.smoking, "dateTime": this.reservation.value.dateTime }, this.docId); 
    } else { 
     console.log(this.doc.value); 
     this.couchbaseService.updateDocument(this.docId, { "guests": this.reservation.value.guests, "smoking": this.reservation.value.smoking, "dateTime": this.reservation.value.dateTime }); 
    } 
} 

這是我的日誌圖像提交後我收到數據,但我不能推到一個新的數組。你能檢查並解釋我爲什麼沒有工作?非常感謝你。

Log image

回答

2

你只是聲明數組,而不是初始化它,它應該是,

let reservationArr : Array<object> = []; 
+0

我的朋友。它的工作,非常感謝你。 –