如何在角4混合应用中使用cordova插件

时间:2017-10-28 08:35:40

标签: angular cordova typescript cordova-plugins ngcordova

我是这个结构的新手。我将相机插件添加到应用程序中并构建应用程序。它会抛出错误。

错误在D:/../ CordovaApp / src / app / menu-bar / menu-bar.component.ts(20,15):Property' camera'类型' N上不存在 AVIGATOR&#39 ;.

错误在D:/../ CordovaApp / src / app / menu-bar / menu-bar.component.ts(23,16):找不到姓名' Camera'。

任何人都可以帮助我摆脱这个问题。

/ **更新部分** /

将两个变量添加到组件中后。应用程序构建成功,但是当我调试应用程序时,我没有将插件属性导入导航器。请参考下面附带的快照。

click on this link to open snap shot

1 个答案:

答案 0 :(得分:0)

Typescript是一种打字语言。因此,无论何时使用任何基于javascript的库/插件,都必须确保相应的类型可用。

在这里,您使用了navigator,它实际上是JavaScript或Cordova已知的,但却不知道由于导致此错误的Typescript。

  

有两种方法可以解决这个问题。

     
      
  1. 安装相应的类型定义。 (http://definitelytyped.org/
  2.   
  3. 将导航器声明为任何类型。
  4.   
@Component({
  selector: 'app',
  template: `<button type="button" (touchend)="onCamera($event)">Camera</button>`
})
export class AppComponent {
  public onCamera(event) {
    const cameraOptions = {
      destinationType: (<any>Camera).DestinationType.FILE_URI
    };
    (<any>navigator).camera.getPicture(cameraSuccess, cameraError, cameraOptions);
  }
}

declare var navigator: any;
declare var Camera: any;

@Component({
  selector: 'app',
  template: `<button type="button" (touchend)="onCamera($event)">Camera</button>`
})
export class AppComponent {
  public onCamera(event) {
    const cameraOptions = {
      destinationType: Camera.DestinationType.FILE_URI
    };
    navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);
  }
}