访问用于推送或更新的字符串列表以在模型中列出

问题描述 投票:0回答:1

我有cc列表包括a

像这样:C1 => a1,a2,a3C2=>a1,a2,a3

我在页面中将它们显示为复选框列表。

我需要选择C和它的a列表。

像这样:C1=>a1C2=>a1,a3

我写的代码,但它列在这样的列表:C1=>a1C2=>a1C2=>a3

那些C是相同的是独立的و但我需要那些C

等于不重新创建,只有他们的年份将更新。

this Smaple Code

这是模型:

 export interface AccessModel {
    controllerNAme:string;
    actionsName:Actionsname[];
}

  export interface Actionsname {
      name:string;
  }

TS:

    onChange(event,controllerName:string,actoinName:string)
{
  this.PushAccessModel.push({
    controllerName,
    actoinName
  })
  console.log(this.PushAccessModel)
}

我怎么解决这个问题 ????

更新

它告诉我这个清单:

actoinName: "a3"
controllerName: "c1"

actoinName: "a2"
controllerName: "c1"

actoinName: "a1"
controllerName: "c1"

在所有对象ControllerName => C1是常见的,但它们是分开的

我需要它给我看这个清单:

controllerName: "c1"
    actoinName: "a3"
    actoinName: "a2"
    actoinName: "a1"
javascript angular typescript angular7
1个回答
1
投票

好吧,我对你的代码做了一些修改,我希望这可能有所帮助:https://stackblitz.com/edit/accessmodel-rabjub

正如您从我的代码中看到的那样,您也遇到了一些类型错误,因此控制台中的结果可能与您期望的结果略有不同。

无论如何,这是最大的变化:

onChange(event,controllerName:string,actionName:string)
{
  var test = this.PushAccessModel.find(x => x.controllerName === controllerName);
  if(test){
    test.actionsName.push({name: actionName});
  }else {
    this.PushAccessModel.push({
      controllerName: controllerName,
      actionsName: [{
        name: actionName
      }]
    });
  }
  
  console.log(this.PushAccessModel)
}
© www.soinside.com 2019 - 2024. All rights reserved.