Javascript 在angular2中使用ngmodel选择选项

Javascript 在angular2中使用ngmodel选择选项,javascript,node.js,angular,Javascript,Node.js,Angular,user.ts 更新代码,问题是当我设置user.roles时,它给出的属性“roles”在类型“user”上不存在 差不多 setUser(user: User): void { this.user = user; this.user.roles = user.Roles; } public ngOnInit(): void { this.userSubscription = this.userService.getuserdetail(this.route

user.ts

更新代码,问题是当我设置user.roles时,它给出的属性“roles”在类型“user”上不存在

差不多

setUser(user: User): void {
  this.user = user;
  this.user.roles = user.Roles;
}

public ngOnInit(): void {        
  this.userSubscription =    this.userService.getuserdetail(this.route.params['_value']['id']).subscribe(user => {            
  this.setUser(user);                              
}); 

该函数的参数不能为User类,因为它具有Roles属性。 在用户类中,您只有角色属性。字母的大小在JS和TS中很重要

ngOnInit() {
  this.user.roles = this.Roles[0];
}

因此,请改用接口:

setUser(user: any): void {
  this.user = user.username; // 
  this.user.roles = user.Roles;
}
您可以完全跳过setUser方法,也可以在订阅中将值分配给用户:

export interface User {
  username: string;
  roles: Role[];
}
当您第一次分配用户的内容并在之后分配角色时,最终会得到错误的用户内容。当我尝试它时,我得到了一个对象,该对象中同时包含角色和角色数组

然后您的模板将需要一些更改,因为数据是异步的,所以我们也将select封装在*ngIf中

注意,角色的迭代是*ngFor=let role of user.roles


希望这有帮助

它给出了一个错误属性“roles”在类型“User”上不存在。您正在[ngModel]=User.roles中使用User.roles,因此我假设它存在。请提供更多的代码,否则我不知道如何提供更具体的反馈。预期的行为是什么?应该选择什么?
setUser(user: any): void {
  this.user = user.username; // 
  this.user.roles = user.Roles;
}
export interface User {
  username: string;
  roles: Role[];
}
.subscribe(user => {
  this.user = {username: user.username, roles: user.Roles}
});
<div *ngIf="user">
  <select [(ngModel)]="user.roles">
    <option value="null" >Select role</option>
    <option *ngFor="let role of user.roles">  
        {{role.title}}
    </option>
  </select>
</div>