angular - Angular Mentions - 保存所选用户的 ID 值
问题描述
在 Angular 提及库的帮助下,我实现了一个允许我提及多个用户的文本区域。
有没有办法保存所选用户的 ID?如果可能,将它们保存为字符串数组。
示例:我选择了用户名称 1、名称 2、名称 3 ...。我希望能够保存 id 而不是名称。[“1”,“2”,“3”]
谁能帮我?
谢谢!
HTML
<div [mention]="items" class="form-control" contenteditable="true" style="border:1px lightgrey solid;min-height:88px" [mentionConfig]="{triggerChar:'@',labelKey:'name'}"></div>
组件.ts
items: string[];
constructor(private userService: UserService) {}
ngOnInit() {
this.userService.getUsers().subscribe(
(val: any[]) =>{
this.items = val;
}
)
}
解决方案
1-您应该首先使用 textarea 而不是 div 以便您可以使用 [(ngModel)] 绑定选定的用户名
<textarea type="text" [mention]="items"
class="form-control" contenteditable="true" style="border:1px lightgrey solid;min-height:88px" [mentionConfig]="{triggerChar:'@',maxItems:10,labelKey:'name'}" [(ngModel)]="data"></textarea>
2-创建可变数据绑定textarea中的所有文本
3-从 json 数据中你可以创建 typescript 类来表示 json 属性,以便于数据过滤
export interface Geo {
lat: string;
lng: string;
}
export interface Address {
street: string;
suite: string;
city: string;
zipcode: string;
geo: Geo;
}
export interface Company {
name: string;
catchPhrase: string;
bs: string;
}
export interface RootObject {
id: number;
name: string;
username: string;
email: string;
address: Address;
phone: string;
website: string;
company: Company;
}
4-使用此保存方法获取所有选定的名称ID
save() {
let ids = this.data.replace(/(\r\n|\n|\r)/gm, "").split("@").filter(t => t != "" && this.items.findIndex(u => u.name == t.trim()) > -1).map(name => this.items.find(s => s.name == name.trim()).id);
}
推荐阅读
- list - Scala迭代列表的两个连续元素
- r - USarrests data.frame in R - 哪个州(行)呈现最小和最大的犯罪率(列)
- maven - 我添加时 Jacoco 报告生成失败
确保插件配置的属性 - javascript - 将自定义键盘设置为默认值
- python - pip 正在全局安装软件包,而不是在 Windows 的虚拟环境中
- python - 为什么我在使用括号时只能在 for 循环中更改列表?
- angular - ionic 5:TypeError:无法读取未定义的属性“订阅”
- flutter - Transform.rotate 的颤振角度值不改变也不更新状态
- python - 分配给 SimpleITK 中的索引图像
- c# - 基于 SQL Server 数据库中另一个组合框选定项数据的组合框项