2017-08-14 2 views
0

J'ai intégré avec succès un plugin cordova dans mon projet angular2. J'appelle la méthode "takePicture" qui appelle avec succès la caméra native.méthode d'appel angluar2 dans la méthode de succès du plugin caméra cordova

public takePicture() { 
    const srcType = navigator.camera.PictureSourceType.CAMERA; 
    const options = this.setOptions(srcType); 
    navigator.camera.getPicture(this.onSuccess, this.onFail,options); 
    } 

    public onSuccess(imageData) { 
    this.capture('data:image/jpeg;base64,' + imageData); <-- this doesn't work here I guess 

    } 

    public onFail(message) { 
    alert('Failed because: ' + message); 
    console.log(message); 
    } 
..... 

Le problème est quand je prends une photo et je l'appelle la fonction onSuccess il échouera quand je l'appelle this.capture (....) avec l'erreur suivante:

core.es5.js:1084 ERROR TypeError: Cannot read property 'capture' of null

qui signifie angulaire ne connaît pas la méthode this.capture (..). Est-ce que quelqu'un sait comment résoudre ce problème?

+0

Impossible de lire la propriété « capture » de ** null **. Je pense que vous devez d'abord vérifier s'il y a des données qui apparaissent dans – Sagar

+0

Je vais vérifier que l'image est remplie. –

+0

Si je débogue, je vois que c'est null dans la méthode. Sur compling je n'ai pas d'erreur –

Répondre

1

Vous perdez le contexte d'objet lors du passage des méthodes d'instance en tant que rappels. Par conséquent, this est évalué à null.

Vous pouvez facilement le fixer en enveloppant l'appel de méthode en fonction:

navigator.camera.getPicture(
    (data) => this.onSuccess(data), 
    (message) => this.onFail(message), 
    options 
);