2016-12-26 83 views
0

我正在創建一個ionic-2項目,我在右下角有一個按鈕。我的觀念是,當我點擊按鈕時,時間選擇器應該打開。我必須選擇我的時間並點擊完成。Ionic-2:無法讀取未定義的屬性'open'

這是怎麼了我試過:

HTML: 
    <ion-header> 
    <ion-navbar color="primary"> 
     <ion-title>Alarms</ion-title> 
    </ion-navbar> 
</ion-header> 

<ion-content> 

    <ion-card *ngFor="let alarms of serAlarm"> 
     <ion-card-header> 
      {{alarms.id}} 
      <ion-toggle value="foo" checked="true"></ion-toggle> 
     </ion-card-header> 
     <ion-card-content> 
      <ion-checkbox (click)="clickRepeat()"></ion-checkbox> Repeat 
      <div class="hide"> 

      </div> 
     </ion-card-content> 
     <ion-card-content class="top0"> 
      {{alarms.hour}}:{{alarms.minute}} 
     </ion-card-content> 
    </ion-card> 


    <ion-datetime #dateTime displayFormat="HH:mm" pickerFormat="HH:mm" [(ngModel)]="dateTimeModel" (ionChange)="onTimeChange()"></ion-datetime> 
    <ion-fab right bottom> 
     <button ion-fab color="primary" (click)="opentime()"> 
      <ion-icon name="add"></ion-icon> 
     </button> 
    </ion-fab> 

</ion-content> 

TS: 
import { Component, ViewChild } from '@angular/core'; 
import { NavController} from 'ionic-angular'; 


@Component({ 
    selector: 'page-alarm', 
    templateUrl: 'alarm.html' 
}) 
export class AlarmPage { 
    time: string = '00:00'; 
    serAlarm = []; 

    constructor(public navCtrl: NavController) { } 

    @ViewChild('dateTime') sTime; 

    opentime(){ 
     this.sTime.open(); 
    } 

    onTimeChange() { 
     var res = this.time.toString().split(":"); 
     this.serAlarm.push({ 
      id: "0", 
      description: "", 
      hour: res[0], 
      minute: res[1], 
      repeat: "0", 
      action: "0", 
      active: "1" 
     }); 
    } 
} 

在這裏,一切工作正常。但是,當我點擊+按鈕時,出現錯誤Cannot read the property 'open' of undefined。我想,問題是在<ion-datetime>一行。但是,我無法弄清楚什麼是錯的。有人可以幫我嗎?我應該改變什麼? enter image description here

+0

你可以嘗試添加'#dateTime'你離子日期時間元素獲得元素的保留?像這樣:' echonax

+0

@echonax:我得到這個錯誤'未處理的承諾拒絕:不能分配給參考或變量! ;區域:;任務:Promise.then;值:錯誤:不能分配給引用或變量!' – SSS

+0

哦,我認爲這是因爲它與'ngModel'具有相同的名稱。你可以這樣試試:'' – echonax

回答

1

爲了選擇你需要給正確的選擇,如果你希望它是dateTime然後更改元素的元素:

<ion-datetime #dateTime displayFormat="HH:mm" pickerFormat="HH:mm" [(ngModel)]="dateTimeModel" (ionChange)="onTimeChange()"></ion-datetime> 

請注意,我已經改變了ngModel,因爲他們有相同的名稱參考。

現在你可以用@ViewChild('dateTime') sTime;

相關問題