首页 > 解决方案 > 如何为 EventEmitter 使用动态返回类型(类似泛型)

问题描述

我们为内部库创建了一个自定义下拉列表。有没有办法让“用户”/开发人员知道,根据@Input multiple参数返回什么类型?

我知道您可以从组件代码中“读取”并解释应该返回的内容。这并不是真正的目标,因为它是一个库。例如,如果这不是组件而是服务方法,我会使用泛型。

@Component({
  selector: 'bkh-dropdown',
  templateUrl: './dropdown.component.html',
  styleUrls: ['./dropdown.component.scss'],
  encapsulation: ViewEncapsulation.None
})
export class DropdownComponent implements OnInit {
  public selectedOption: DropdownItem[] = [];
  ...

  @Input() items: DropdownItem[] = [];
  @Input() multiple: boolean = false;
  @Output() valueChange = new EventEmitter<DropdownItem[] | DropdownItem>();

  constructor() { }

  ngOnInit() { }

  public optionSelected() {
    // return the first element if multiple is not active, otherwise the whole array
    this.valueChange.emit(this.multiple ? this.selectedOption : this.selectedOption[0]);
  }
}

标签: angulartypescriptgenericsapi-design

解决方案


推荐阅读