我必须了解这种奇怪的行为
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未定义
为什么呢?还有另一种在typescript中初始化Map对象的方法吗?
答案 0 :(得分: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));
但是这样你必须两次列出所有必需的参数,因此第一个建议通常是这个用例的首选建议。