5

我想从 Angular 2+ 中的自定义浮动过滤器组件中打开带有过滤器选项的小菜单。
就像在官方文档中一样,应该可以有一个浮动输入字段,旁边有一个图标。 我设法创建了一个对我来说很好的自定义浮动组件,唯一的问题是打开小菜单来选择过滤器选项,就像在浮动过滤器的默认实现中一样(见下图)。
在此处输入图像描述
在此处输入图像描述

你能告诉我如何从自定义浮动过滤器中打开这个菜单,或者至少默认组件是如何做到这一点的吗?

这是我的一些代码:

打字稿

export interface TextFloatingFilterChange {
  model: SerializedTextFilter
}

export interface TextFloatingFilterParams extends IFloatingFilterParams<SerializedTextFilter, TextFloatingFilterChange> {
  value: string
}

@Component({
  selector: 'floating-text-filter',
  templateUrl: 'floating-text-filter.component.html',
  styleUrls: ['floating-text-filter.component.scss']
})
export class TextFloatingFilter implements IFloatingFilter<SerializedTextFilter, TextFloatingFilterChange, TextFloatingFilterParams>, AgFrameworkComponent<TextFloatingFilterParams>, AfterViewInit {
  private params: TextFloatingFilterParams;
  public currentValue: string;

  agInit(params: TextFloatingFilterParams): void {
    this.params = params;
    this.currentValue= '';
  }

  valueChanged() {
    this.params.onFloatingFilterChanged({model: this.buildModel()})
  }

  ngAfterViewInit(): void {
    this.valueChanged();
  }

  onParentModelChanged(parentModel: SerializedTextFilter): void {
    if(!parentModel) {
      this.currentValue = '';
    } else {
      console.log(parentModel);
      this.currentValue = parentModel.filter;
    }
  }

  private buildModel(): SerializedTextFilter {
    if(this.currentValue === '') {
      return null
    }
    return {
      filterType: 'text',
      type: 'contains',
      filter: this.currentValue
    }
  }

  public openFilterMenu(): void {
    console.log('open Menu');
  }
}
4

0 回答 0