Angular 无法读取属性';推动';未定义的
我在typescript上使用push方法时遇到问题,请在此详细说明Angular 无法读取属性';推动';未定义的,angular,nativescript,angular2-forms,angular2-nativescript,Angular,Nativescript,Angular2 Forms,Angular2 Nativescript,我在typescript上使用push方法时遇到问题,请在此详细说明 这是我的预订模式组件代码: guestArray=[1, 2, 3, 4, 5, 6]; guests: number; isDateTime: boolean = false; constructor(private params: ModalDialogParams, private page: Page) { if(params.context === "guest") {
这是我的预订模式组件代码:
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])
}
}
guestArray=[1,2,3,4,5,6];
嘉宾:人数;
isDateTime:布尔值=false;
构造函数(私有参数:ModalDialogParams,
私人网页(第页){
if(params.context==“guest”){
this.isDateTime=false;
}
else if(params.context==“日期时间”){
this.isDateTime=true;
}
}
恩戈尼尼特(){
如果(此.isDateTime){
让datePicker:datePicker=this.page.getViewById('datePicker');
让currentdate:日期=新日期();
datePicker.year=currentdate.getFullYear();
datePicker.month=currentdate.getMonth()+1;
datePicker.day=currentdate.getDate();
datePicker.minDate=当前日期;
datePicker.maxDate=新日期(2045,4,12);
让timePicker:timePicker=this.page.getViewById('timePicker');
timePicker.hour=currentdate.getHours();
timePicker.minute=currentdate.getMinutes();
}
}
公开提交(){
如果(此.isDateTime){
让datePicker:datePicker=this.page.getViewById('datePicker');
让selectedDate=datePicker.date;
让timePicker:timePicker=this.page.getViewById('timePicker');
让selectedTime=timePicker.time;
让reserveTime=新日期(selectedDate.getFullYear(),
selectedDate.getMonth(),
selectedDate.getDate(),
selectedTime.getHours(),
selectedTime.getMinutes());
this.params.closeCallback(reserveTime.toISOString());
}
否则{
让picker=this.page.getViewById('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 });
}
}
预约:FormGroup;
形式保留:视图;
formResult:视图;
docId:string=“预订”;
医生:任何;
db:任何;
构造函数(私有changeDetectorRef:changeDetectorRef,
私有formBuilder:formBuilder,
私人modalService:ModalDialogService,
私有vcRef:ViewContainerRef,
私人网页:第页,
私人couchbaseService:couchbaseService){
super(changedethetectorref);
this.reservation=this.formBuilder.group({
嘉宾:3,,
吸烟:错,
日期时间:['',验证器。必需]
});
this.doc=this.couchbaseService.getDocument(this.docId);
}
createModalView(args){
let选项:ModalDialogOptions={
viewContainerRef:this.vcRef,
上下文:args,
全屏显示:错误
};
this.modalService.showmodel(ReservationModalComponent,选项)
。然后((结果:任意)=>{
if(args==“guest”){
this.reservation.patchValue({guests:result});
}
else if(args==“日期时间”){
this.reservation.patchValue({dateTime:result});
}
});
}
恩戈尼尼特(){
this.formReservation=this.page.getViewById(“form_reservation”);
this.formResult=this.page.getViewById(“form_result”);
这个.formResult.animate({
不透明度:0,
比例:{x:0.5,y:0.5},
持续时间:0
})
}
吸烟检查(args){
让smokingSwitch=args.object;
如果(烟雾开关。已检查){
this.reservation.patchValue({smoking:true});
}
否则{
this.reservation.patchValue({smoking:false});
}
}
onGuestChange(args){
设textField=args.object;
this.reservation.patchValue({guests:textField.text});
}
onDateTimeChange(args){
设textField=args.object;
this.reservation.patchValue({dateTime:textField.text});
}
onSubmit(){
log(JSON.stringify(this.reservation.value));
let reservationArr:Array;
reservationArr.push(this.reservation.value);
log(JSON.stringify(reservationArr));
这个.formReservation.animate({
不透明度:0,
比例:{x:0.5,y:0.5},
持续时间:500
}).然后(()=>this.formResult.animate({
不透明度:1,
比例:{x:1,y:1},
持续时间:500
}));
如果(this.doc==null){
log(“这是第一次预订”);
this.couchbaseService.createDocument({“来宾”:this.reservation.value.guests,“冒烟”:this.reservation.value.smoking,“dateTime”:this.reservation.value.dateTime},this.docId);
}否则{
console.log(此.doc.value);
this.couchbaseService.updateDocument(this.docId,{“guests”:this.reservation.value.guests,“smoking”:this.reservation.value.smoking,“dateTime”:this.reservation.value.dateTime});
}
}
这是提交后的日志图像,我已收到数据,但无法将其推入新阵列。你能检查一下并解释一下为什么不起作用吗?多谢各位
您只是声明数组而不是初始化它,它应该是
let reservationArr : Array<object> = [];
let-reservationArr:Array=[];
您只是声明数组而不是初始化它,它应该是
let reservationArr : Array<object> = [];
let-reservationArr:Array=[];