Angular Mentions - 保存所选用户的 ID 值

标签 angular typescript

在 Angular 提及库的帮助下,我实现了一个允许我提及多个用户的文本区域。

有没有办法保存选中用户的ID?如果可能,将它们保存为字符串数组。

示例:我选择了用户姓名 1、姓名 2、姓名 3 ....我希望能够保存 ID 而不是姓名。 [“1”、“2”、“3”]

谁能帮帮我?

谢谢!

Stackblitz

HTML

 <div [mention]="items" class="form-control" contenteditable="true" style="border:1px lightgrey solid;min-height:88px" [mentionConfig]="{triggerChar:'@',labelKey:'name'}"></div>

Component.ts

 items: string[];
  constructor(private userService: UserService) {}

  ngOnInit() {
    this.userService.getUsers().subscribe(
      (val: any[]) =>{
        this.items = val;
      } 
    )
  }

Image

最佳答案

1- 你应该首先使用 textarea 而不是 div 这样你就可以使用 [(ngModel)] 来绑定(bind)选定的用户名

<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-创建变量数据绑定(bind)textarea中的所有文本

3-您可以从 json 数据创建代表 json 属性的 typescript 类,以便于进行数据过滤

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-使用这个save方法获取所有选中的名字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);
  }

demo

关于Angular Mentions - 保存所选用户的 ID 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238487/

相关文章:

angular - ngx-pipes 按多个条件过滤

angular 4-在一个打开的选项卡中注销时在所有选项卡中自动注销

javascript - 从简单类型创建嵌套 TypeScript 类型

javascript - 在 ag-grid 中显示来自服务器的数据

typescript 类属性未被初始化

node.js - tsc 不被识别为内部或外部命令

javascript - Angular 4 中的 entryComponents,如何监听父元素中的事件,从 entryComponnents 发出

angular - 什么是脱水检测器,我如何在这里使用它?

Angular 4 - ngModelChange 在两个选择表单绑定(bind)期间抛出无法读取未定义的属性 '...'

linux - 从 TypeScript 运行任何 Linux 终端命令?