离子发球后,无法解析[object OBJECT]的所有参数

时间:2017-05-02 06:19:16

标签: typescript ionic-framework cordova-plugins

不确定我做错了什么,但在尝试使用离子和Cordova插件时,我在离子发送后收到以下错误:“无法解析[object OBJECT],[object OBJECT],[object]的所有参数OBJECT],[object OBJECT],[object OBJECT],?“

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();
  }

3 个答案:

答案 0 :(得分:6)

我在某个地方遇到了同样的问题,所以我删除了构造函数的最后一个参数并在构造函数之前给出了它。在你的情况下,这样,

export class HomePage {

 public previewRect: CameraPreviewOptions;

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

我不知道这是否是正确的解决方案,但解决了我的问题。

答案 1 :(得分:0)

这是一个鲜为人知的角度依赖性问题,编译器无法解开依赖性树。

解决方案是将@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 :(得分:0)

如果所有内容均按预期方式导入,重新启动离子应用程序可能会解决此问题