不确定我做错了什么,但在尝试使用离子和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();
}
答案 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)
如果所有内容均按预期方式导入,重新启动离子应用程序可能会解决此问题