在嵌套数组中添加对象

Adding object in nested array

我正在处理 Angular 12 项目,我必须在其中添加和删除现有数据集中的数据。

我有一个门户对象,其中我有 PortalUser 数组,每个 PortalUser 对象都有一个密码数组(结构在下面的代码片段中)。

情况:我有在用户数组中添加用户和在用户密码数组中添加密码的按钮。

要求: 1. 当我单击“添加用户”时,它会在用户数组中添加一个用户(工作正常) 2. 当我在第一个用户中单击“添加密码”时(用户位于索引 0),它应该只在索引 0 处的用户中添加密码(不工作)

问题: 当我在第一个用户(索引 0 处的用户,addPassword(0))中单击“添加密码”时,它会向所有用户添加密码,而不管索引如何。

请查看下面的代码,帮助我找出我在这里遗漏的内容。

提前致谢。

HTML以下

<p>{{ portal | json }}</p>

<hr>
<hr>
<a (click)="addUsername()">Add User</a><br>

<hr>
<a (click)="addPassword(0)">Add Password in 1st user</a><br>

<hr>
<a (click)="addPassword(1)">Add Password in 2nd user</a><br>

TS以下

const emptyPassword = {
  "password": '',
  "id": 0
};

const emptyPortalUser = {
  "username": '',
  "id": 0,
  "passwords": [emptyPassword]
};

@Component({
  selector: 'logic-poc',
  templateUrl: './logic-poc.component.html',
  styleUrls: ['./logic-poc.component.css']
})
export class LogicPocComponent implements OnInit {

  constructor() { }

  portal = {
    "id": 0,
    "name": '',
    "users": [emptyPortalUser],
  };

  ngOnInit(): void {
    
  }

  addUsername() {
    this.portal.users.push(emptyPortalUser);
  }

  addPassword(ui: number){
    this.portal.users[ui].passwords.push(emptyPassword);    
  }

}

预期输出

{
   "id": 0,
   "name": "",
   "users": [
      {
         "username": "",
         "id": 0,
         "passwords": [
            {
               "password": "",
               "id": 0
            },
            {
               "password": "",
               "id": 0
            }
         ]
      },
      {
         "username": "",
         "id": 0,
         "passwords": [
            {
               "password": "",
               "id": 0
            }
         ]
      }
   ]
}

我得到的实际输出

{
   "id": 0,
   "name": "",
   "users": [
      {
         "username": "",
         "id": 0,
         "passwords": [
            {
               "password": "",
               "id": 0
            },
            {
               "password": "",
               "id": 0
            }
         ]
      },
      {
         "username": "",
         "id": 0,
         "passwords": [
            {
               "password": "",
               "id": 0
            },
            {
               "password": "",
               "id": 0
            }
         ]
      }
   ]
}

您将相同的用户对象推送到用户数组。 您需要推送不同的用户实例。

接下来就是在addUsername()函数中,需要新建一个用户