2016-08-18 3 views
1

Ich habe dieses seltsame Verhalteninitialize Karte in Typoskript

Code

private map:Map<string,number>=new Map<string,number>(); 

callForFlower(cookie:string) : Observable<Map<string,number>>{ 
    try{ 
     this.url='https://flower.it/getFlower; 
     return this.http.get(this.url) 
      .map(this.extractFlower) 
      .catch(this.handleError); 
    }catch(err){ 
     this.errMsgSubj.next(err) 
    } 
} 
extractFlower(){ 
    this.addRose(); 
} 
addRose(){ 
    this.map.set("rose",0) 
} 

zu verstehen, wenn ich map.set Ich erhalte eine Ausnahme

this.map undefiniert ist

warum? Gibt es eine andere Möglichkeit, Map-Objekt in Typoskript zu initialisieren?

Antwort

2

Wenn Sie this in Methoden übergeben um wie

.map(this.extractFlower) 
    .catch(this.handleError); 

verwenden möchten, sollten Sie es

.map(this.extractFlower.bind(this)) 
    .catch(this.handleError.bind(this)); 

oder

zu

ändern
.map((param) => this.extractFlower(param)) 
    .catch((param) => this.handleError(param)); 

aber auf diese Weise haben Sie alle aufzulisten erforderlichen Parameter zweimal, daher ist der erste Vorschlag in der Regel der bevorzugte für diese Verwendung Fall.

+0

das ist eine gute Antwort – mautrok

+0

Ich habe meine Antwort gelöscht, Sie sind die richtige – mautrok