typescript - Angular 6 - får undefined, når der sendes data til klassevariabel


Jeg har en service, og inden i konstruktøren kører jeg en metode for at hente nogle data. Jeg kan se dataene, så derefter videregiver jeg dem til en foruddefineret variabel.

Sådan her:

export class SentinelService {

  configuration;

  constructor() {


    this.electronService.ipcRenderer.on('config' , function(event , data) {

      this.configuration = data; // pass the data to configuration variable

      console.log(this.configuration.name); // Check it ... I can see the value here


    });

  }


  myMethod() {

    // Try it here
    console.log(this.configuration.name); // I get Undefined

  };


  ...

Selvom jeg har tildelt værdien til 'configuration'-variablen og kan se, at den er blevet videregivet fra metoden inde i konstruktøren, får jeg 'undefined', når jeg prøver det samme på en anden metode.

Hvordan kan jeg rette dette?

Svar #1

Brug en arrow-funktion som din callback for at bevare klassens omfang:

this.electronService.ipcRenderer.on('config' , (event , data) => {
  this.configuration = data; 
  ...

Se også på dette for at forstå, hvorfor normale funktioner og pilefunktioner er forskellige.

Relaterede artikler