我在Ionic 2移动应用程序中有一个Angular 2 NgModule
,如下所示:
@NgModule({
declarations: [
MyApp,
HomePage,
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
],
providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, VatRatesDbService]
})
export class AppModule {}
以这种方式定义服务:
import { Injectable } from '@angular/core';
import * as PouchDB from 'pouchdb';
@Injectable()
export class VatRatesDbService {
private _db;
private constructor() {
this._db = new PouchDB('rates.db', { adapter: 'websql' });
}
}
但是,我在运行时收到以下错误:
键入' typeof VatRatesDbService'不能分配给类型 ' FactoryProvider&#39 ;.物业'提供'类型' typeof中缺少 VatRatesDbService'
答案 0 :(得分:12)
解决方法是从构造函数中删除私有修饰符。您根本无法使用私有构造函数进行注射服务。
public constructor() {
this._db = new PouchDB('rates.db', { adapter: 'websql' });
}
或:
constructor() {
this._db = new PouchDB('rates.db', { adapter: 'websql' });
}
答案 1 :(得分:11)
发生这种情况是由于ionic 4的ionic最新更新。
您必须像这样导入它(添加'/ ngx')
import { PluginName} from '@ionic-native/pluginName/ngx';
或者,您可以降级插件的版本
这是另一个插件在我身上发生的事情。
答案 2 :(得分:2)
它在 Ionic 4 中对我有用
你必须像这样导入它(添加 '/ngx' )
从'@ionic-native/pluginName/ngx'导入{插件名};
答案 3 :(得分:0)
我在最新的Ionic 4 CLI版本4.9.0中面临此问题
当我在最新的CLI中创建旧版本的Ionic 3应用程序并安装本机插件应用版本时,我遇到了此错误
[ts] 不能将类型“ AppVersionOriginal”分配给类型“提供者”。 类型'AppVersionOriginal'缺少类型'FactoryProvider'中的以下属性:提供,useFactory [2322]
为此,我们需要安装较旧版本的本机插件