Angular 2/4推入对象内的数组

时间:2017-12-09 10:59:29

标签: javascript angular typescript

我一直在尝试在对象内部的数组中推送一些注释(对象不是数组,但是有数组)我花了很长时间才能让它工作。我拥有的是

export class test{
     recordname: string;
     comments: [{
         comment: string
      }]
}

每次有人输入评论时,我想将它添加到注释数组中,就像这样

  addcomment: test;
addRow(){
    this.addcomment.comment.push({
        comment : 'first comment'})

我尝试使用不同的方式添加它似乎无法使其工作。我推送的消息未定义。我不能使用addcomment:test [] = [];因为这是输入和保存vlaues的形式。 请让我知道如何推送评论值

3 个答案:

答案 0 :(得分:0)

你在addcomment.comment上有拼写错误(评论) 像这样。 1.将注释定义为数组。 2.然后只需使用push函数并传入一个对象。

  export class test{
         recordname: string;
         comments: any[];
    }

this.addcomment.comments.push({
    comment : 'first comment'})

答案 1 :(得分:0)

此示例创建一个新的RecordItem,我们可以随后将项目推送到其中,初始化一个空的recordNamecomment数组。

export class Comment {
  comment: string
}

export class RecordItem {
  recordName: string;
  comments: Comment[]

  constructor(recordName: string, comments: Comment[]) {
    this.recordName = recordName;
    this.comments = comments;
  }
}

const recordItem = new RecordItem('', []);

recordItem.comments.push({ comment: 'Hey!!' });

答案 2 :(得分:0)

一定要始终初始化你的对象和数组......你可以用不同的方式做到这一点,例如......

export class test{
         recordname: string;
         comments: any[] = []; //set it as empty array ...intilized
    }

addcomment: test = new test(); //<-- INITIALIZE IT
addRow(){
    this.addcomment.comment.push({
        comment : 'first comment'});
}

或者如果你不喜欢这个approch ...

addcomment: test = new test(); //<-- INITIALIZE IT
    addRow(){

//check if nested array is undefined ..or other
 if(!this.addcomment.comment || this.addcomment.comment.length<=0)
     {
       this.addcomment.comment =[]; //<-- INITIALIZE AS EMPTY ARRAY
     }
        this.addcomment.comment.push({
            comment : 'first comment'});
    }

希望它可以帮到你!!