【问题标题】:How to assign object to an empty array如何将对象分配给空数组
【发布时间】:2019-12-11 17:50:18
【问题描述】:

在我的 angular6 应用程序中,

我已经声明了如下的空数组:

conversation=[]

我在共享模块中有构造函数,它确实初始化了下面的对话对象是代码

export class messageThread {
    internalId?: number;
    unreadMessageCount?: number;
    subject?: string;
    managerCode?: string;
    constructor(json?: any) {
        if ( !json ) return;
        this.internalId= json.internalId || 0;
        this.unreadMessageCount=json.internalId || 0;;
        this.subject = json.internalId || '';
        this.managerCode =json.managerCode|| '';

    }
}

但是,如果我喜欢下面的内容,则在我的 ts 文件中时。

this.conversation = new dataModel.messageThread (); 

它给了我错误:说只能使用 push,pop,我知道这是因为我已经用空数组初始化它并且它确实期望数组作为赋值,有什么方法可以将对象分配给空数组,或者我在这里遗漏了一些东西

【问题讨论】:

  • 您希望得到什么样的数组? MessageThreads 数组?如果是这样,那么只需 push 与新对象对话。
  • 为什么要将对象分配给数组。如果你只有一个对象,那么数组是没有用的,如果你有多个对象,那么你必须推入数组。您将对象分配给数组的任何具体原因?

标签: angular typescript


【解决方案1】:

也许你想要类型化数组:

public conversation: messageThread [] = [];

并推动价值观:

this.conversation.push(new dataModel.messageThread());

【讨论】:

    【解决方案2】:

    在处理 Angular 时,请始终记住 Angular 是 javascript 框架,因此您可以根据您的问题在 Angular 中使用任何 javascript 函数,您可以简单地在数组上使用 .push() 函数;

     var abc = [];
        obj = {itemName:'paste',itemPrice: '50$'};
        
        abc.push(obj);
        
        
        console.log(abc);
        

    【讨论】:

      【解决方案3】:

      你可以像这样使用对象解构...

      conversation=[];
      obj = {
        itemName:'paste',
        itemPrice: '50$'
      }
      
      ngOnInit(){
         this.conversation = [ { ...this.obj } ];
      }
      

      【讨论】:

        【解决方案4】:

        将对象分配给 Array 类型是没有意义的。如果要将对象分配给 conversation 变量。你为什么不把conversation的类型或者像一个空对象一样赋值。 conversation = {} 然后使它等于这个this.conversation = new dataModel.messageThread ();

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 2017-12-10
          • 1970-01-01
          • 1970-01-01
          • 2016-01-14
          • 2019-09-04
          • 2015-07-15
          相关资源
          最近更新 更多