【问题标题】:looking for dropdown component for angular2寻找 angular2 的下拉组件
【发布时间】:2016-12-02 18:45:26
【问题描述】:

我正在寻找 Angular2 的下拉选择组件,除了 Angular2 本身之外没有其他依赖项。 我发现的所有组件都需要 jquery,否则我必须在没有 Angular2 本身以外的依赖项的情况下使用它

【问题讨论】:

  • 不确定它是否使用其他库,但你可以看看它:primefaces.org/primeng/#/dropdown
  • 它是否只是一个简单的下拉列表,可以处理对象并显示单个文本字段以供选择。或者您是否需要下拉菜单中的自定义图像、复选框等功能...
  • 您可以使用 Angular Material:material.angularjs.org/latest - 从技术上讲,它是另一个依赖项,但它仍然是 Angular“家族”的一部分
  • 我找到了 ng2-select valor-software.com/ng2-select
  • @FilipLauc 我需要自定义图片的第二选择,

标签: angular components


【解决方案1】:

创建自定义下拉菜单没什么大不了的。再加上它是你能得到的“轻量级”。您需要做的就是:

  1. 根据传递的数据创建元素列表
  2. 使列表在单击时可见,并在选择列表元素时再次隐藏
  3. 选择元素时发送数据

这基本上就是你需要的一切:

    @Component({
      selector: 'custom-select',
      template: `
          <div class="selected" (click)="openClose()">
              <div class="when-selected" *ngIf="selected">
                  <span>{{selected.title}}</span>
                  <img [src]="selected.img" />
              </div>
              <div class="placeholder" *ngIf="!selected">
                  This is shown when nothing is selected
              </div>
          </div>
          <ul class="select" [hidden]="closed">
              <li *ngFor="let o of options" (click)="select(o)">
                  <span>{{o.title}}</span>
                  <img [src]="o.img" />
              </li>
          </ul>
          `
      })

      export class CustomSelect {
          @Input() options: any;

          @Input() selected: any;
          @Output() selectedChange: EventEmitter<any> = new EventEmitter();

          closed: boolean = true;

          select(option: any): void {
              this.selected = option;
              this.selectedChange.emit(option);
              this.openClose();
          }

          openClose(): void {
              this.closed = !this.closed;
          }
      }

你可以这样使用它:

<custom-select [(selected)]="myItem" [options]="allOptions"></custom-select>

这是整个plunker

现在您只需要对其进行样式设置,并可能将元素结构更改为适合您的内容。

【讨论】:

  • 感谢 Filip,这很有趣。我已经使用 ng2-select 我对渲染感到满意,但我不知道如何获取我选择的元素。也许我必须设置隐藏输入中选择的值。
  • 什么意思?所选元素存储在父组件的 myItem 属性中。你能给我一个你想如何使用它的例子吗?
  • 实际上你需要更多,比如造型。但是这个答案是一个很好的基础,我可以在 1-2 小时内将其扩展为一个有效的多级自定义选择。
猜你喜欢
  • 2022-09-23
  • 2011-02-19
  • 1970-01-01
  • 2015-12-30
  • 2017-03-31
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多