离子服务后无法解析 [object OBJECT] 的所有参数

Posted

技术标签:

【中文标题】离子服务后无法解析 [object OBJECT] 的所有参数【英文标题】:can't resolve all parameters for [object OBJECT], after ionic serve 【发布时间】:2017-09-29 14:09:36 【问题描述】:

不确定我做错了什么,但是在尝试使用 ionic 和 Cordova 插件时,我在 ionic serve 后收到以下错误:“无法解析 [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();
  

【问题讨论】:

【参考方案1】:

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

export class HomePage 

 public previewRect: CameraPreviewOptions;

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

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

【讨论】:

不,这只能解决编译器问题,但在运行时会失败我们期望的是在运行时调用构造函数时创建的指定类的对象【参考方案2】:

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

解决方案是在声明中使用@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

【讨论】:

非常感谢! @Inject() 使我的应用程序正常工作,搜索了一个多小时! @GauravGupta,很高兴能帮到你。【参考方案3】:

如果一切都按预期导入,重新启动您的 ionic 应用程序可能会解决此问题

【讨论】:

以上是关于离子服务后无法解析 [object OBJECT] 的所有参数的主要内容,如果未能解决你的问题,请参考以下文章

GraphQLError [Object]:语法错误:无法解析意外字符“;”

无法使用ngx-restangular处理离子4项目获取错误:无法找到模块“core-js / fn / object”[关闭]

离子本地通知 TypeError: Object(...) is not a function

无法解析 AuthService 的所有参数:([object Object], ?) Angular 5.x

问题实现社交共享离子 ==> 错误 NullInjectorError: R3InjectorError(e)[[object Object]

无法解析 AngularFirestore 的所有参数:([object Object], ?)