数组添加未定义元素,角度为6

时间:2018-11-21 15:34:32

标签: arrays angular angular6

我对应该为空的数组有问题,问题是它不是,并且里面有未定义的元素,因此不允许我正确查询后端。

这是有问题的组件和控制台日志:

export class AvailabilityVerifierComponent implements OnInit {

  usersAvailabilities: UserAvailability[] = [];

  users: Array<User> = [];

  @Input() 
  set userToVerify(user: User){
    console.log('users array in input');
    console.log(this.users);
    console.log('User en AvailabilityVerifierComponent');
    console.log(user);
    console.log('users componente after push ');
    console.log(this.users);
    this.users.push(user);    
    console.log('users componente before push ');
    console.log(this.users);
    this.verifyAvailabilitiesService.verify(this.users)
    .subscribe(
      response => {
        this.usersAvailabilities = response;
      },
      error => {
        console.log(error);
      }  
    );

  }

  constructor(
    private verifyAvailabilitiesService: VerifyAvailabilitiesService
  ) { }

  ngOnInit() {
  }
}

enter image description here

1 个答案:

答案 0 :(得分:4)

随着时间的推移,您的控制台日志会发生变化;它被重新评估。您的初始数组中不可能有一个未定义的元素。这里发生的是,在初始化组件时,将使用undefined作为参数调用输入。因此,您将“未定义”推入数组。将this.users.push(user)更改为

if (user) { 
   this.users.push(user); 
}

,您应该已经准备就绪;除了您的服务器将被调用两次。您可能只想添加:

if (!user) {
   return;
}

在您的userToVerify方法的顶部。