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

时间:2019-04-13 12:37:15

标签: javascript angular typescript angular7

我有c的列表,并且c中包含了a

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

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

我需要将所选的C及其a放入列表中。

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

我编写了该代码,但将其放在这样的列表中:C1=>a1C2=>a1C2=>a3

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

等于不会重新创建,只会更新其年份。

this Smaple Code

这是Model:

 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中的

是Common,但它们是分开的

我需要它向我显示此列表:

controllerName: "c1"
    actoinName: "a3"
    actoinName: "a2"
    actoinName: "a1"

1 个答案:

答案 0 :(得分: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)
}