何が間違っているのか分かりませんが、ionicとCordovaプラグインを使用しようとすると、ionic serve: "解決できません[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト] 、?のすべてのパラメータ
import { Component, Injectable } from '@angular/core';
import { NavController } from 'ionic-angular';
import { ToastController } from 'ionic-angular';
import { File } from '@ionic-native/file';
import { Diagnostic } from '@ionic-native/diagnostic';
import { CameraPreview, CameraPreviewOptions, CameraPreviewDimensions} from '@ionic-native/camera-preview';
declare var cordova: any;
@Component({
selector: 'page-home',
templateUrl: 'home.html',
providers: [CameraPreview, Diagnostic]
})
export class HomePage {
constructor(
public navCtrl: NavController,
public toastCtrl: ToastController,
public file:File,
public diagnostic:Diagnostic,
public cameraPreview: CameraPreview,
public previewRect: CameraPreviewOptions
) {
this.checkPermissions();
}
どこかで同じ問題が発生したため、コンストラクタの最後のパラメータを削除し、コンストラクタの前に指定しました。このような場合、
export class HomePage {
public previewRect: CameraPreviewOptions;
constructor(
public navCtrl: NavController,
public toastCtrl: ToastController,
public file:File,
public diagnostic:Diagnostic,
public cameraPreview: CameraPreview
) {
this.checkPermissions();
}
}
これが正しい解決策かどうかはわかりませんが、問題は解決しました。
これはあまり知られていませんangular依存関係の問題であり、コンパイラは依存関係ツリーを解くことができません。
解決策は、宣言で_@Inject
_を使用することです。
_export class HomePage {
constructor(
public navCtrl: NavController,
public toastCtrl: ToastController,
public file:File,
public diagnostic:Diagnostic,
@Inject(CameraPreview) public cameraPreview: CameraPreview
) {
this.checkPermissions();
}
}
_
これにより、欠落しているクラスが後の時点で注入されることをコンパイラーに伝えています。
また、重要なのは、CameraPreview
自体を@Injectable()
で装飾する必要があるということです。
_@Injectable()
export class CameraPreview
// ... your code
}
_