繁体   English   中英

如何传递Angular2组件的格式选项?

[英]How to pass formatting options for Angular2 component?

我有一个非常简单的组件

@Component({
  selector: "generic-select",
  template: `
 <select [(ngModel)]="target">
  <option *ngIf="target" hidden selected>{{target}}</option>
  <option *ngFor="let c of choices">{{c}}</option>
 </select>
`
}) export class SelectorComponent<T> {

  @Input()
  private choices: T[];

  @Input()
  private target: T;
}

问题是,T并不总是像字符串或数字这样的原始对象,而是一个复杂的对象。 因此,在这种情况下,我想传递一些内容(我并不真正知道),该内容告诉T预览的外观。

我想要像

<generic-select [choices]="choices" [target]="user.choice" [formatter]="(t:T) => t.name"></generic-select>

并非完全符合您的要求,但这是该问题的潜在解决方案:

如果使用TypeScript,则可以创建扩展其他类的类 如果可以确定显示值字段的约定,则可以在公共基类上具有此属性,然后使用它代替泛型类型。

显然,要使用基本类型,它们也需要被类包装。

如果要同时支持原语和自定义类型,另一种方法是在组件上具有两个可选的输入属性,一个用于所有原语(如您现在所拥有),另一个用于公共类类型。 然后,在模板中显示基于提供的输入的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM