javascript - ionic 2 : Cannot read the property 'open' of undefined

标签 javascript angular ionic2

我正在创建一个 ionic-2 项目,其中右下角有一个按钮。我的想法是,当我单击按钮时,时间选择器应该打开。我必须选择时间并单击“完成”。

这是我尝试过的方法:

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

最佳答案

为了选择元素,您需要提供正确的选择器,如果您希望它是dateTime,则将元素更改为:

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

请注意,我已经更改了 ngModel,因为它们具有相同的名称引用。

现在您可以使用 @ViewChild('dateTime') sTime; 获取该元素

关于javascript - ionic 2 : Cannot read the property 'open' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41332581/

相关文章:

angular - Ionic2 如何在提供程序中获取 NavController

ionic-framework - IONIC 2 ionic 选择更改时隐藏和显示文本框

javascript - 如何使用 jQuery 在 DOM 元素中添加非值属性

angular - 如何将 three.js OrbitControls 限制到特定的 Angular2 组件或 Div

javascript - ngx bootstrap 警报 - 检测关闭事件

javascript - 无法安装ionic2 SQLite插件

javascript - 包含 "&"的 url 不适用于 google pagespeed api

javascript - 显示网页上的幻灯片数量

javascript - 如何在jquery插件参数中使用 '$(this)'

json - Angular http.post 嵌套 json