Angular 2 for循环显示错误

时间:2018-02-07 13:39:08

标签: angular loops for-loop

从代码中可以看出,我有一个显示所有用户的弹出窗口,并检查当前项目的用户。这是一个ts文件:

users = [];
projectUsers = [];


constructor( private userService: UserService, private projectService: ProjectService, public dialog: DialogRef<any> ) {
    super( dialog, dialog.context );
}

ngOnInit() {  
    this.projectService.getUsersForProject(this.context.projectId).subscribe(
            (response:any) => {
                this.projectUsers = response 
            },
            error => { console.error( error ); },
        );

    this.userService.get().subscribe(
            response =>  
                this.users = response,
            error => { console.error( error ); },
        );

    }

containsUser (user) {
    for( var u of this.projectUsers) {
        if (u.user.id === user.id) {
            return true;
        }
    }
    return false;
}

selectUser(category, event , user) {
    if (event.target.checked) {
        this.projectUsers.push(user);
    } 
    else {
        this.projectUsers.splice(user);
    }
}

submitUser() {
    this.confirm(this.projectUsers);
}

}

这是html的一部分:

<li *ngFor="let user of users">
    <input class="roles-li" type="checkbox" [checked]="containsUser(user)"  name="user" (change)="selectUser(option, $event, user)">{{ user.person.name }}
</li>

selectUser函数应该监听更改,如果我正在检查任何添加到项目的用户,它将在projectUser数组中将其推送,或者如果未选中则将其拼接。

容器函数中出现问题,调试器指向(if(u.user.id === user.id))错误消息:无法读取未定义的属性“id”。

只有在我检查一些用户并继续执行功能后才会发生这种情况。有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

object

我认为您需要在if中进行此测试 如果您的'u'或'user'未定义,您将收到错误消息。

答案 1 :(得分:0)

我认为问题是:

FILE * fp = fopen ("file.txt", "a +");
setvbuf (destination_file, NULL, _IOFBF, BUFFER_SIZE);

您应该阅读 renders in between each item 以及需要的参数。