【问题标题】:ionic-native/date-picker StaticInjectorError离子原生/日期选择器 StaticInjectorError
【发布时间】:2019-11-30 12:43:30
【问题描述】:

所以我尝试使用DatePicker,但是我得到了StaticInjectorError

这是我尝试过的:

import {Component} from '@angular/core';
import {TextService} from '@core/services/text/text.service';
import {Router} from '@angular/router';
import {FeaturePage} from '@feature/paths';
import {User} from '@core/classes/user';
import {DatePicker} from '@ionic-native/date-picker/ngx';

@Component({
    selector: 'app-setup',
    templateUrl: 'setup.page.html',
    styleUrls: ['setup.page.scss'],
})
export class SetupPage {

    user: User;

    constructor(private textService: TextService, private router: Router, private datePicker: DatePicker) {
        this.user = new User();

        this.datePicker.show({
            date: new Date(),
            mode: 'date',
            androidTheme: this.datePicker.ANDROID_THEMES.THEME_HOLO_DARK
        }).then(
            date => console.log('Got date: ', date),
            err => console.log('Error occurred while getting date: ', err)
        );
    }

}

我收到以下错误:

core.js:15724 ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[SetupPage -> DatePicker]: 
  StaticInjectorError(Platform: core)[SetupPage -> DatePicker]: 
    NullInjectorError: No provider for DatePicker!
Error: StaticInjectorError(AppModule)[SetupPage -> DatePicker]: 
  StaticInjectorError(Platform: core)[SetupPage -> DatePicker]: 
    NullInjectorError: No provider for DatePicker!
    at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:8896)
    at resolveToken (core.js:9141)
    at tryResolveToken (core.js:9085)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:8982)
    at resolveToken (core.js:9141)
    at tryResolveToken (core.js:9085)
    at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:8982)
    at resolveNgModuleDep (core.js:21218)
    at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:21907)
    at resolveNgModuleDep (core.js:21218)
    at resolvePromise (zone.js:831)
    at resolvePromise (zone.js:788)
    at zone.js:892
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423)
    at Object.onInvokeTask (core.js:17290)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:422)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:195)
    at drainMicroTaskQueue (zone.js:601)

如果您没有导入模块,通常会发生这种情况,但是在文档中没有要导入的模块?

【问题讨论】:

  • 嗯,你导入了吗?通常所有@ionic-native 包都必须导入app.module.ts 的providers 数组中
  • @AugustinR ive 添加了这个:提供者:[ IonicNativePlugin ],对吗?
  • 将其写在答案中以获得更好的可读性。

标签: javascript angular ionic-framework


【解决方案1】:

尝试在app.module.ts 中添加这个:

import { DatePicker } from '@ionic-native/date-picker/ngx';

[...]

@NgModule({
...
providers: [
    ...,
    DatePicker
]
...
})

通常所有@ionic-native 包都必须导入app.module.ts 的providers 数组,即使它没有在ionic 文档中提及。

【讨论】:

  • 这是正确的。每次添加插件时,还必须将其添加到 app.module.ts 中。实际上它在文档中提到但很难找到。 “在 @NgModule 中导入插件并将其添加到提供者列表中。” ionicframework.com/docs/native/overview
  • Marc 正在使用 Ionic 4,正确的链接是:ionicframework.com/docs/native/date-picker。如您所见,没有提到将插件添加到providers数组
  • @AugustinR 当我这样做时它可以工作,但是它为我提供了以下错误 获取日期时发生错误:cordova_not_available
  • 使用原生插件时,如果它与浏览器不兼容,您必须在设备上运行您的应用程序才能使其工作。这是 Cordova 插件的目的:使设备的本机功能在基于 webview 的应用程序中可用。这就是它不能在浏览器上运行的原因。
  • 这个答案用 ng2-daterangepicker 解决了我在一个完全不相关的主题上的问题
猜你喜欢
  • 1970-01-01
  • 2018-12-17
  • 2019-05-14
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
相关资源
最近更新 更多