我已经在我的项目中安装了插件日期选择器。
在顶部有
import { DataPicker } from 'ionic-native'
的组件中,如果我像那样使用它(带有注释的androidTheme参数)它可以工作:
let options = {
date: new Date(),
mode: 'date',
// androidTheme: DatePicker.ANDROID_THEMES.THEME_HOLO_LIGHT
};
DatePicker.show(options).then(
(date) => {
console.log('date_value:' + date)
}).catch( (error) => { });
如果我取消注释
androidTheme:DatePicker.ANDROID_THEMES.THEME_HOLO_LIGHT
,它会在构建过程中抛出错误:
类型“typeof DatePicker”上不存在属性“ANDROID_THEMES”
我按照此处的建议
在我的项目文件夹中的 CLI 中执行了
npm install ionic-native
,但它没有解决问题。它给了我以下输出(对我来说似乎没问题):
`-- npm WARN 可选跳过失败的可选依赖项 /chokidar/fsevents:当我查看npm WARN notsup 与您的操作系统或架构不兼容:
[my project]\plugins\cordova-plugin-datepicker\www
时,它包含与3个平台(ios、android、windows)相对应的3个文件夹,每个文件夹都有一个名为“DatePicker.js”的JS文件,在代码中包含的android文件夹下面的一个:
/**
* Android themes
*/
DatePicker.prototype.ANDROID_THEMES = {
THEME_TRADITIONAL : 1, // default
THEME_HOLO_DARK : 2,
THEME_HOLO_LIGHT : 3,
THEME_DEVICE_DEFAULT_DARK : 4,
THEME_DEVICE_DEFAULT_LIGHT : 5
};
如果我查看 [my project]\nodes_modules\ionic-native\dist\plugins\
,文件
datepicker.js
存在(当然),但不包含每个平台的特殊性。怎么了?为什么项目中添加了插件,
datepicker.js
下的
[my project]\nodes_modules\ionic-native\dist\plugins\
却没有包含各个平台的特殊性?
在[我的项目]中 odes_modules\ionic-native\dist\plugins[android|ios|windows]\datepicker.js
代码末尾写着:
var datePicker = new DatePicker();
module.exports = datePicker;
// Make plugin work under window.plugins
if (!window.plugins) {
window.plugins = {};
}
if (!window.plugins.datePicker) {
window.plugins.datePicker = datePicker;
}
因此,它使得 datePicker (以小写字母开头)与 DatePicker (以 ionic-native 的大写字母开头)不同。
在我需要它的组件中,我只是在组件之前声明:
declare var datePicker: any;
然后在该组件内我更改了代码:
let options = {
date: new Date(),
mode: 'date',
androidTheme: datePicker.ANDROID_THEMES.THEME_HOLO_LIGHT
};
DatePicker.show(options).then(
(date) => {
console.log('date_value:' + date)
}).catch( (error) => { });
它有效。