typeof XService不能分配给' FactoryProvider'。物业'提供'不见了

时间:2017-02-09 21:43:05

标签: angular ionic2 pouchdb

我在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'

4 个答案:

答案 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';

或者,您可以降级插件的版本

这是另一个插件在我身上发生的事情。

More info here

答案 2 :(得分:2)

它在 Ionic 4 中对我有用

你必须像这样导入它(添加 '/ngx' )

从'@ionic-native/pluginName/ngx'导入{插件名};

答案 3 :(得分:0)

Source Link

我在最新的Ionic 4 CLI版本4.9.0中面临此问题

当我在最新的CLI中创建旧版本的Ionic 3应用程序并安装本机插件应用版本时,我遇到了此错误

[ts] 不能将类型“ AppVersionOriginal”分配给类型“提供者”。   类型'AppVersionOriginal'缺少类型'FactoryProvider'中的以下属性:提供,useFactory [2322]

为此,我们需要安装较旧版本的本机插件