2017-08-08 1 views
0

Ich versuche, eine einfache Fehlerbenachrichtigungskomponente einzurichten, während das Debuggen in Visual Studio innerhalb von subscribe, dieser scheint nicht definiert zu sein.RxJS: Warum ist 'das' undefiniert innerhalb Abonnieren

public notifications: NotificationMessage[]; 

constructor(notificationService: NotificationService) { 
    this.notifications = []; //'this' is defined here 

    notificationService.rxEmitter.subscribe((notificationMessages: any) => { 
     this.notifications = notificationMessages; //'this' is undefined here 
    }); 
} 

Edit: Screenshot dieser von einem Haltepunkt in VS. nicht definiert wird Interessanterweise existiert '_this', , zur Laufzeit, obwohl ich es nicht referenzieren kann, da Typoskript einen Verweis nicht gefunden Fehler bei der Kompilierung wirft.

+0

Dies ist sehr unwahrscheinlich. Pfeilfunktionen funktionieren nicht so. Entweder unterscheidet sich echter Code von dem, den Sie gepostet haben, oder Sie haben irgendwo anders einen Fehler. Erwägen Sie, http://stackoverflow.com/help/mcve zur Verfügung zu stellen, das das Problem replizieren kann, ein Plunk wäre in Ordnung. – estus

+0

haben Sie versucht, den Subskriptionsaufruf in eine ngOnInit-Methode zu setzen? Es scheint so zu sein, als ob es aufgerufen wurde, bevor Ihr Konstruktor das Objekt tatsächlich erstellt hat. Dies ist zu diesem Zeitpunkt noch nicht definiert. – Supamiu

+0

@Supamiu sollte nicht der Fall sein, op sollte eine PLNKR wie der Code scheint mir gut –

Antwort

0

Es stellt sich heraus, Visual Studio Debugger gab mir einen Ablenkungsmanöver sagen, dass dies nicht definiert ist. Das Testen mit console.log ergab eine gültige Ausgabe.

Visual Studio hat Probleme mit den Pfeilfunktionen. Typoskript kompiliert dieses zu _this.

compiled js of NotifierComponent

Wenn Sie einen Haltepunkt aus subscribe erstellen und prüfen diese Visual Studios Debugger wird die anonyme Funktion in dem generierten JavaScript-Code oben inspizieren und nicht mehr diese finden.

Ein Workaround ist die Überprüfung _this stattdessen.

Dieser Artikel scheint mein Problem zu beschreiben.

https://typescript.codeplex.com/workitem/1655

Verwandte Themen