【问题标题】:can't resolve all parameters for [object OBJECT], after ionic serve离子服务后无法解析 [object OBJECT] 的所有参数
【发布时间】: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();
  }

【问题讨论】:

    标签: typescript ionic-framework cordova-plugins


    【解决方案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 应用程序可能会解决此问题

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多