【问题标题】:error TS2554: Expected 2 arguments, but got 1错误 TS2554:预期 2 个参数,但得到 1
【发布时间】:2020-05-19 15:01:47
【问题描述】:

我将我的 ionic 应用程序从 Ionic 3 升级到 Ionic 4,这给我带来了相机问题。 ionic serve

的控制台上显示此错误

src/app/register/register.page.ts(50,4) 中的错误:错误 TS2554: 预期 2 个参数,但得到 1 个。 [ng] src/app/register/register.page.ts(53,63): error TS2749: 'Camera' 指的是一个值,但在这里被用作一个类型。

下面是register.ts

import { Component, ViewChild, OnInit } from '@angular/core';
import { ScrollDetail } from '@ionic/core';
import { NavController, LoadingController, ToastController } from '@ionic/angular';
import { Http, Response, Headers, RequestOptions }  from "@angular/http";
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs/Observable';
import { SignaturePad } from 'angular2-signaturepad/signature-pad';
import { Storage } from '@ionic/storage';
import { Camera, CameraOptions } from '@ionic-native/camera';

@Component({
  selector: 'app-register',
  templateUrl: './register.page.html',
  styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {

showToolbar = false;
capturedSnapURL:string;




onScroll($event: CustomEvent<ScrollDetail>) {
    if ($event && $event.detail && $event.detail.scrollTop) {
      const scrollTop = $event.detail.scrollTop;
      this.showToolbar = scrollTop >= 225;
    }
}

 signature = '';
 isDrawing = false;

  options: CameraOptions = {
    quality: 100,
    destinationType: this.camera.DestinationType.DATA_URL,
    encodingType: this.camera.EncodingType.JPEG,
    mediaType: this.camera.MediaType.PICTURE,
    cameraDirection:0
  }

  clickedImagePath:any;

  @ViewChild(SignaturePad) signaturePad: SignaturePad;


   constructor(public navCtrl: NavController, private camera: Camera, private http: Http, public loading: LoadingController, public storage: Storage, public toastCtrl: ToastController) {

  }


  ngOnInit() {
  }


ionViewDidEnter() {
    this.signaturePad.clear()
    this.storage.get('savedSignature').then((data) => {
      this.signature = data;
    });
  }


  drawComplete() {
    this.isDrawing = false;
  }

  drawStart() {
    this.isDrawing = true;
  }

  savePad() {
    this.signature = this.signaturePad.toDataURL();
    this.storage.set('savedSignature', this.signature);
    this.signaturePad.clear();
   /* let toast = this.toastCtrl.create({
      message: 'New Signature saved.',
      duration: 3000
    });
    toast.present();*/
  }

  clearPad() {
    this.signaturePad.clear();
  }


clickImage(){
    this.camera.getPicture(this.options).then((imageData) => {
      // imageData is either a base64 encoded string or a file URI
      // If it's base64 (DATA_URL):
      let base64Image = 'data:image/jpeg;base64,' + imageData;
      this.clickedImagePath = 'data:image/jpeg;base64,' + imageData;
     }, (err) => {
      // Handle error
     });
  }



}

谁能指出我做错了什么?

【问题讨论】:

  • 您是否将 Camera 导入到正确的模块(可能是您的 app.module)中并声明了它?

标签: angular typescript


【解决方案1】:

你只需要在 app.module.ts 的 providers 数组中包含 Camera

import { Camera } from '@ionic-native/camera';

providers: [
   Camera 
]

【讨论】:

    【解决方案2】:

    使用它来导入相机插件

    import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
    

    并在 HTML 中为 SignaturePad 组件提供一个 ID(如“componentId”)并将您的视图组件代码更改为以下

    @ViewChild('componentId', { static: true } ) signaturePad: SignaturePad;
    

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-05-19
      • 2019-10-21
      • 2021-07-29
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多