2016-03-05 9 views
5

Я новичок в ионной, и я играю с ионной бета-версией 2. Я пытаюсь реализовать родной datepicker, используя плагин cordova, например in the documentation.ionic 2 DatePicker

Я полностью копирую/вставляю пример, и я получаю "ReferenceError: DatePicker is not defined на Nexus 5 Emulator и Archos Android-телефоне.

openDatePicker() { 
    var options = { 
     date: new Date(), 
     mode: 'date' 
    }; 

    function onSuccess(date) { 
     alert('Selected date: ' + date); 
    } 

    function onError(error) { // Android only 
     alert('Error: ' + error); 
    } 

    DatePicker.show(options, onSuccess, onError); 
    } 

Я искал много и не нашел ничего об этом, может быть, я делаю это неправильно с Cordova плагин на ионический 2?

+0

Привет @ MoKAt пожалуйста, вы можете предоставить HTML часть кода, чтобы знать точное решение, теперь я пытаюсь сделать ионную сборщика 2 даты, я перепробовал много способов это не полезно для меня, так что не могли бы вы помочь в этом? .... спасибо ... –

+0

Я не думаю, что у меня есть этот код, но ответ (и документация) дает всю необходимую информацию, так как я сделал это работать с ним. – MokaT

ответ

7

Документация по этому вопросу отсутствует (Ionic Native docs во время этого вопроса по-прежнему очень много WIP).

ionic-native представляет собой отдельный модуль из каркаса, так что вам необходимо установить его:

# from within your project directory 
npm install --save ionic-native 

Вам также необходимо установить плагин, который вы пытаетесь использовать, если вы еще не :

#from within your project directory 
ionic plugin add cordova-plugin-datepicker 

Затем импортировать DatePicker плагин в вашем коде:

import {DatePicker} from 'ionic-native'; 

И то же, что и Ionic 1, вы не сможете использовать какие-либо плагины, пока Кордова не будет готова. Это означает, что вы можете использовать либо Platform.ready или ждать deviceready события огня по window:

constructor(platform: Platform) { 
    platform.ready().then(() => { 
    let options = { 
     date: new Date(), 
     mode: 'date' 
    } 

    DatePicker.show(options).then(
     date => { 
     alert('Selected date: ' + date); 
     }, 
     error => { 
     alert('Error: ' + error); 
     } 
    ); 
    }); 
} 

Также одна вещи, чтобы отметить, что ionic-native оборачивает обратные вызовы в обещании.

+1

Спасибо за этот хороший ответ, но у меня все еще есть проблемы, я установил ionic-native (и rxjs из-за зависимостей), у меня есть папка в node_modules, и она ссылается на package.json, но build is неудачный 'Не удается разрешить модуль 'ionic-native'' – MokaT

+2

Последний выпуск был плохим, попробуйте обновиться сейчас:' npm install ionic-native' – user1234

+0

Он работает! Большое спасибо ! Быстрое обновление. Я впечатлен :) – MokaT

0

Попробуйте это:

step 1: npm install @ionic-native/core --save 
step 2: npm install --save @ionic-native/date-picker 
step 3: add this plugin to your app.module.ts 
      i. import { DatePicker } from '@ionic-native/date-picker'; 
     ii. providers:[DatePicker] 
step 4: import { DatePicker } from '@ionic-native/date-picker'; 
step 5: Inject in constructor: 
     constructor(public datePicker: DatePicker) { } 
step 6: You can access datePicker like: 
     this.datePicker.show({ 
     date: new Date(), 
      mode: 'date', 
      androidTheme: this.datePicker.ANDROID_THEMES.THEME_HOLO_DARK 
     }).then(
      date => console.log('Date: ', date), 
      err => console.log('Error while getting date: ', err) 
     );