Javascript Angular 2 map.set不是一个函数
我正在尝试为我的地图添加一些值。例如,我有以下几点: 我的通讯录课Javascript Angular 2 map.set不是一个函数,javascript,angular,Javascript,Angular,我正在尝试为我的地图添加一些值。例如,我有以下几点: 我的通讯录课 export class AddressBook { constructor( public social: Map<string, string> = new Map<string, string>(), ) { } } 这是我添加到社交地图的方法 this.addressBook.social.set('Google+','GooglePlusId'); 但是我得到了以下错
export class AddressBook {
constructor(
public social: Map<string, string> = new Map<string, string>(),
) {
}
}
这是我添加到社交地图的方法
this.addressBook.social.set('Google+','GooglePlusId');
但是我得到了以下错误
caused by: this.addressBook.social.set is not a function
下面是我如何从服务器检索数据
return this.http.get(this.addressBookURL+address_book_id)
.map(res => <AddressBook> res.json())
.catch(this.handleError);
this.addressBookService.getAddressBookFromId(address_book_id)
.subscribe((res) => {
this.addressBook = res;
},
error => {
console.log(<any>error);
});
返回this.http.get(this.addressBookURL+address\u book\u id)
.map(res=>res.json())
.接住(这个.把手错误);
this.addressBookService.getAddressBookFromId(地址簿id)
.订阅((res)=>{
this.addressBook=res;
},
错误=>{
console.log(错误);
});
不知道如何解决这个问题。如果有人能给我指出正确的方向,我将不胜感激。感谢尝试安装
@types/core js
模块它包含所有es6功能(映射、设置…)的typescript定义:
尝试安装
@types/core js
模块它包含所有es6功能(映射、设置…)的typescript定义:
我猜您没有将正确的参数传递给AddressBook构造函数。 事实上,我猜你是这样做的:
let addressBook= new AdresseBook({
twitter: "twitterId",
facebook: "facebookId",
linkedIn: "linkedinId",
pinterest: "pinterestId"
} as any);
虽然您应该传递一个映射
对象
let map = new Map();
let obj = {
twitter: "twitterId",
facebook: "facebookId",
linkedIn: "linkedinId",
pinterest: "pinterestId"
};
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
let addressBook = new AdresseBook(map);
编辑:我是对的(我总是对的),你不能期望一个普通的对象是一个地图:
return this.http.get(this.addressBookURL+address_book_id)
.map(res => <AddressBook> res.json()) //here you are just telling the compiler
// that resp.json() is an AdresseBook, but
// it's not right, it's a plain Object
.catch(this.handleError);
我猜您没有将正确的参数传递给AddressBook构造函数。 事实上,我猜你是这样做的:
let addressBook= new AdresseBook({
twitter: "twitterId",
facebook: "facebookId",
linkedIn: "linkedinId",
pinterest: "pinterestId"
} as any);
虽然您应该传递一个映射
对象
let map = new Map();
let obj = {
twitter: "twitterId",
facebook: "facebookId",
linkedIn: "linkedinId",
pinterest: "pinterestId"
};
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
let addressBook = new AdresseBook(map);
编辑:我是对的(我总是对的),你不能期望一个普通的对象是一个地图:
return this.http.get(this.addressBookURL+address_book_id)
.map(res => <AddressBook> res.json()) //here you are just telling the compiler
// that resp.json() is an AdresseBook, but
// it's not right, it's a plain Object
.catch(this.handleError);
该项目是使用angular cli生成的,安装@types/core js也没有效果。我需要怎么设置它?感谢这是我接收数据的方式
this.addressBookService.getAddressBookFromId(address\u book\u id).subscribe((res)=>{this.addressBook=res;},error=>{console.log(error);})代码>该项目是使用angular cli生成的,安装@types/core js也没有效果。我需要怎么设置它?感谢这是我接收数据的方式this.addressBookService.getAddressBookFromId(address\u book\u id).subscribe((res)=>{this.addressBook=res;},error=>{console.log(error);})代码>你的通讯录是如何构建的?请提供新地址簿(someData)
部分。这是我的地址簿导出类地址簿{constructor(public-social:Map=new-Map(),){}
我已经知道。。。。新地址簿(someData)
部分,请!!!!我已经更新了我的问题,包括如何实例化该类。您的通讯簿是如何构造的?请提供新地址簿(someData)
部分。这是我的地址簿导出类地址簿{constructor(public-social:Map=new-Map(),){}
我已经知道。。。。新地址簿(someData)
部分,请!!!!我已经更新了我的问题,以包括如何实例化该类。我的AddressBook类看起来像这样导出类AddressBook{constructor(public social:Map=new Map(),){}
数据来自服务器。我所要做的就是在地图上添加一个新项目。我知道类的外观在你的问题中,我不知道它是如何实例化的新地址簿(数据)
部分。我已经更新了我的问题,以包括如何实例化类。请看一看。谢谢你,伙计,你说得对。这解决了我的问题。:)我的AddressBook类看起来像这样导出类AddressBook{constructor(public social:Map=new Map(),){}
数据来自服务器。我所要做的就是在地图上添加一个新项目。我知道类的外观在你的问题中,我不知道它是如何实例化的新地址簿(数据)
部分。我已经更新了我的问题,以包括如何实例化类。请看一看。谢谢你,伙计,你说得对。这解决了我的问题。:)