web-dev-qa-db-ja.com

typeof XServiceは、タイプ 'FactoryProvider'に割り当てることができません。プロパティ「provide」がありません

Angular 2 NgModule in a Ionic 2モバイルアプリは次のように定義されています:

@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' });
  }
}

ただし、実行時に次のエラーが発生します。

タイプ「typeofVatRatesDbService」は、タイプ「FactoryProvider」に割り当てることができません。プロパティ「provide」がタイプ「typeofVatRatesDbService」にありません。

解決策は、コンストラクターからプライベート修飾子を削除することです。民間のコンストラクターで注射可能なサービスを提供することはできません。

public constructor() {
  this._db = new PouchDB('rates.db', { adapter: 'websql' });
}

または:

constructor() {
  this._db = new PouchDB('rates.db', { adapter: 'websql' });
}

これは、ionic ionic 4の最新の更新です。

このようにインポートする必要があります( '/ ngx'を追加)

import { PluginName} from '@ionic-native/pluginName/ngx';

または、プラグインのバージョンをダウングレードできます

それは別のプラグインで私に起こっていました。

詳細はこちら

29
Blast06

ソースリンク

最新のIonic 4CLIバージョン4.9.0でこの問題に直面しています

古いバージョンIonic 3アプリケーションを最新のCLIで作成し、ネイティブプラグインアプリバージョンをインストールしたときにこのエラーが発生しました

[ts]タイプ「AppVersionOriginal」はタイプ「プロバイダー」に割り当てることができません。タイプ「AppVersionOriginal」には、タイプ「FactoryProvider」から次のプロパティがありません:provide、useFactory [2322]

そのためには、古いバージョンのネイティブプラグインをインストールする必要があります

0
Code Spy