Je suis un débutant en Ionic 2. Je voudrais utiliser l'appareil photo en Ionic. J'ai suivi https://ionicframework.com/docs/native/camera/ J'ai déjà installé le cordova-plugin-camera
plugin et installé ionic-native/camera en utilisant le code cli.
Pendant que je sers le projet, il montre une erreur d'exécution:
Uncaught (promis): Erreur: Aucun fournisseur pour la caméra! injectionError
J'envoie app.module.ts, la page html et la page de script de type. Jetez un coup d'oeil s'il vous plait.
app.module.ts
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HttpModule } from '@angular/http';
import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { HomePage } from '../pages/home/home';
import { TabsPage } from '../pages/tabs/tabs';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { CameraExamplePage } from "../pages/camara-example/camara-example";
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
CameraExamplePage
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
CameraExamplePage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
Page de prise de vue html de l'appareil photo
<ion-header>
<ion-navbar>
<ion-title>camaraExample</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<button ion-button color="dark" (click)="takePhoto()" > Take Photo
</button>
<img [src]="imageURL" *ngIf="imageURL">
</ion-content>
** Fichier TypeScript **
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Camera, CameraOptions } from '@ionic-native/camera'
@IonicPage()
@Component({
selector: 'page-camara-example',
templateUrl: 'camara-example.html',
})
export class CameraExamplePage {
imageURL
constructor(public navCtrl: NavController, public navParams: NavParams, public camera: Camera) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad CameraExamplePage');
}
takePhoto()
{
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.DATA_URL,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE
}
this.camera.getPicture(options).then((imageData) => {
// imageData is either a base64 encoded string or a file URI
// If it's base64:
//let base64Image = 'data:image/jpeg;base64,' + imageData;
this.imageURL = imageData
}, (err) => {
// Handle error
});
}
}
Vous devez définir Camera comme fournisseur dans app.module.ts
import { Camera } from '@ionic-native/camera';//import in app.module.ts
//...
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler},
Camera //here
]
Pendant que je sers le projet, il montre une erreur d'exécution
REMARQUE: les plugins Cordova ne fonctionnent pas dans ionic serve .. Vous devez utiliser l'émulateur/le périphérique. Incluez également votre code de plugin dans this.platform.ready()
et vérifiez si cordova est disponible en utilisant this.platform.is('cordova')
import { Platform } from 'ionic-angular'; //import Platform
//...
constructor(public platform:Platform){}
//...
takePhoto() {
this.platform.ready().then(() => {
if(this.platform.is('cordova')){
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;
}, (err) => {
// Handle error
});
}
})
}
vous devez d'abord installer les plugins de caméra en utilisant deux commandes
$ ionic plugin cordova ajouter cordova-plugin-camera
$ npm install --save @ ionic-native/camera
après cela dans votre app.module.ts vous devez import
que plugins
et changer votre provider
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HttpModule } from '@angular/http';
import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { HomePage } from '../pages/home/home';
import { TabsPage } from '../pages/tabs/tabs';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { CamaraExampalePage } from "../pages/camara-exampale/camara-exampale";
import { Camera} from '@ionic-native/camera';
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
CamaraExampalePage
],
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage,
CamaraExampalePage
],
providers: [
Camera,
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
Il y a un problème avec l'instruction import
générée automatiquement. Vous avez besoin de: `importer {Camera, CameraOptions} depuis '@ ionic-native/camera/ngx';