web-dev-qa-db-ja.com

ionic serveの後に、[object OBJECT]のすべてのパラメーターを解決できない

何が間違っているのか分かりませんが、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();
  }
9
J.Rem

どこかで同じ問題が発生したため、コンストラクタの最後のパラメータを削除し、コンストラクタの前に指定しました。このような場合、

export class HomePage {

 public previewRect: CameraPreviewOptions;

 constructor(
  public navCtrl: NavController,
  public toastCtrl: ToastController,
  public file:File,
  public diagnostic:Diagnostic,
  public cameraPreview: CameraPreview   
 ) {
  this.checkPermissions();
 }
}

これが正しい解決策かどうかはわかりませんが、問題は解決しました。

6
Iris_geek

これはあまり知られていません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
}
_
2
Miroslav Jonas