Javascript 在angular2中使用ngmodel选择选项
user.ts 更新代码,问题是当我设置user.roles时,它给出的属性“roles”在类型“user”上不存在 差不多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
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>