2017-06-21 4 views
1

„this“ in ngOnInit„this“ wird nicht definiert in ngOnInit

undefined wird Ich versuche, das Objekt zu schieben, die auf einen Rückruf zu einem global definierten Array zurückgegeben wird.

aber es gibt Fehler, dass

"nicht Eigentum von undefinierten lesen kann"

export class ItemsComponent implements OnInit { 
items: Item[]; 
devices: any[]; 
constructor(private itemService: ItemService) { 
    this.devices = new Array(); 
} 
ngOnInit(): void { 
    bluetooth.isBluetoothEnabled().then(
     enabled => console.log("Enabled ? " + enabled) 
    ); 
    bluetooth.startScanning({ 
     serviceUUIDs: [], 
     seconds: 4, 
     onDiscovered: function(peripheral) { 
      this.devices.push(peripheral); 
     } 
    }).then(function() { 
     console.log("scanning complete"); 
    }, function(err) { 
     console.log("error while scanning: " + err); 
    }); 
    this.items = this.itemService.getItems(); 
}} 

i diesen Fehler bei

this.devices.push(peripheral); 

Antwort

2

Sie sollten Arrow Function verwenden auf korrekte this zu bekommen zu halten Innenfunktion.

onDiscovered: function(peripheral) 

sollte

onDiscovered:(peripheral) => { 

} 
+0

dies scheint korrekt zu sein, aber wenn ich verwenden this.devices.forEach (Element => { console.log (element.UUID); }); in "dann", es gibt den gleichen Fehler –

+0

weiter mehr Ich erwarte this.devices für die UI verfügbar sein, so dass ich es an ein Element binden kann. –

+2

@RaasMasood Dann machen Sie jede einzelne Funktion, wo Sie lexikalisch "this" einen Pfeil erwarten. Dafür sind Pfeile da. – estus

Verwandte Themen