我正在制作一个应用程序,但在尝试将一个数组插入另一个数组时卡住了。 我收到错误消息“无法读取未定义的属性‘推送’。”
这是对象:
export var CARDS: any[] = [
{
channel: "facebook"
date: "2016-01-07"
comments: [
{
content: "Hey would you look at this card?",
user: "John Appleseed",
avatar: "url"
},
{
content: "I like this card!",
user: "John Doe",
avatar: "url"
}
]
},
{
channel: "facebook"
date: "2016-01-07"
comments: [
{
content: "Hey would you look at this card?",
user: "Jane Doe",
avatar: "url"
}
]
}];
我的应用程序中有一个选项可以向卡片添加评论。因此我创建了:
newComment = {
content: "",
user: "",
avatar: ""
};
然后用一个按钮调用 submitComment 函数:
submitComment(comment) {
console.log(this.newComment);
this.comment.push(newComment);
}
我的 HTML 看起来像这样(仅供引用:我正在使用 ionic,这解释了 ionic 输入)
<ion-input type="text" placeholder="Type a comment..." [(ngModel)]="newComment.content"></ion-input>
<button (click)="submitComment(comment)">Send comment</button>
我在 submitComment 函数中做了一个 console.log,它显示了正确的信息。但是插入不起作用。我收到错误“无法读取未定义的属性‘推送’”。我在括号中尝试了“this.newComment”,但它也不起作用。
我才刚刚开始了解 Angular/JS,所以它可能是一些我无法理解的简单内容。预先感谢您的帮助:-)
编辑:我忘了添加。我做了一个 *ngFor="let comment of card.comments"来显示所有评论。因此,我只是在进一步的 HTML 中使用“评论”。
最佳答案
您的问题是因为您提供给 submitComment
方法的 comment
变量为空。所以你不能调用任何方法(特别是push
)...
否则您的 CARDS
属性似乎没有正确定义。您宁愿这样定义它:
CARDS: any [] = [
{
channel: "facebook"
date: "2016-01-07"
comments: [
{
content: "Hey would you look at this card?",
user: "John Appleseed",
avatar: "url"
},
{
content: "I like this card!",
user: "John Doe",
avatar: "url"
}
]
},
{
channel: "facebook"
date: "2016-01-07"
comments: [
{
content: "Hey would you look at this card?",
user: "Jane Doe",
avatar: "url"
}
]
}
];
关于javascript - 如何将对象放入另一个对象 Angular/Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198051/