2017-01-13 3 views
0

Ich habe eine save Funktion, die einen Dienst aufruft. Ich abonniere die Ergebnisse des Serviceaufrufs, indem ich ihm eine Erfolgsfunktion und eine Fehlerfunktion übergebe. Die Erfolgsfunktion funktioniert wie erwartet. Wenn jedoch die Fehlerfunktion wegen einer ungültigen Anforderung an den Dienst gestellt genannt wird, erhalte ich folgende Fehlermeldung:Konsole undefined in Chrome

Error from Save command: TypeError: Cannot read property 'log' of undefined 

Dies liegt daran, für welchen Gründen auch immer geschieht, console in der Fehlerfunktion nicht definiert wird. Aber was komisch ist, ist, dass console.log in der Erfolgsfunktion einwandfrei funktioniert.

Hier ist ein Ausschnitt aus der save Funktion ist:

this.returnFileParameterService.save(this.selectedParam).subscribe(
      res => { 
       let param = _.find(this.returnFileParameters, param => _.isUndefined(param.id) || _.isNull(param.id)); 
       if (_.isUndefined(param)){ 
        param = _.find(this.returnFileParameters, ['id', res.id]); 
       } 
       _.set(param, 'id', res.id); 
       _.set(param, 'modifiedDate', res.modifiedDate); 
       console.log("test"); 
      }, 
      err => console.log('Error from Save command: ' + err) 
     ); 
+1

Betrifft dies nur Chrome? – Amy

+0

Ich bin ein bisschen verwirrt. Der Fehler, den Sie erhalten, sieht aus wie der Fehler, der vom Fehlerhandler ausgegeben wird. Ich glaube nicht, dass seine "Konsole" nicht definiert ist. Es scheint, dass das Versprechen abgelehnt wird mit "Kann nicht lesen Eigenschaft Protokoll von undefined". Kannst du das klären? – Amy

+0

Wow. Du hast absolut recht. Ich kann nicht glauben, dass ich das verpasst habe. Aber immer noch nicht genau, was los ist lol ... – wheeler

Antwort

1

OK, dachte ich es aus: Ich .catch(this.handleError); rief meine Fehler-Handler als Fang Teilnehmer hinzufügen, aber in meinem Fehler-Handler hatte ich diese Zeile : this.logger.log('handleError()');. this.logger nicht vorhanden, da this auf die Funktion festgelegt wurde, die den Fehlerhandler anstelle der Klasse aufruft, in der der Fehlerhandler enthalten war. Daher musste ich dem Fangabonnement eine Sperrung hinzufügen: .catch(error => this.handleError(error));.

Verwandte Themen