[英]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.