2016-08-18 3 views
1

Я должен понять это странное поведениеинициализации карты в машинописном

код

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) 
} 

когда я map.set я получаю исключение

this.map неопределен

Почему? есть ли другой способ инициализировать объект Map в машинописном тексте?

ответ

2

Если вы хотите использовать this в методах розданы как

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

вы должны изменить его на

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

или

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

, но таким образом, вы должны перечислить все требуемые параметры дважды, поэтому первое предложение обычно является предпочтительным для этого использования дело.

+0

Это хороший ответ – mautrok

+0

Я удалил свой ответ, ваш правильный – mautrok

Смежные вопросы