我正在尝试创建一个像这样的组件:
<dropdown formControlName="car">
<dropdown-option value="volvo"></dropdown-option>
<dropdown-option value="bmw"></dropdown-option>
<dropdown-option value="peugeot"></dropdown-option>
<!-- etc -->
</dropdown>
我对下拉组件的定义如下:
export component DropdownComponent<T> {
possibilities: Array<T>
}
我对下拉选项组件的定义如下:
export component DropdownOptionComponent<T> {
@Input() value: T
}
我的DropdownOptionComponent
是否可以推断T
的通用类型DropdownComponent
并将DropdownOptionComponent
的可用选项限制为满足通用T
的任何内容?
编辑:为了进一步阐明我要解决的问题,我希望我的模板足够聪明,可以看到给定父级定义的模板中,它将检查其是否有效。
编辑2:更好的例子:
// mycomponent.component.ts
export class MyComponent {
data: Array<{param1: number, param2: string}>;
}
<!-- mycomponent.component.html -->
<table [dataSource]="data">
<table-entry *myTemplateDirective="let entry">
<!-- do something with entry -->
</table-entry>
</table>
是否有可能根据表组件中entry
的输入来键入data
。
在代码示例中编辑3:错字