我对应该为空的数组有问题,问题是它不是,并且里面有未定义的元素,因此不允许我正确查询后端。
这是有问题的组件和控制台日志:
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() {
}
}
答案 0 :(得分:4)
随着时间的推移,您的控制台日志会发生变化;它被重新评估。您的初始数组中不可能有一个未定义的元素。这里发生的是,在初始化组件时,将使用undefined作为参数调用输入。因此,您将“未定义”推入数组。将this.users.push(user)
更改为
if (user) {
this.users.push(user);
}
,您应该已经准备就绪;除了您的服务器将被调用两次。您可能只想添加:
if (!user) {
return;
}
在您的userToVerify
方法的顶部。