2017-04-10 42 views
3

是否可以使用Typescript模板/泛型类作为Angular2组件? 如果是,请给我/请给我一个示例代码?Typescript作为Angular2组件的泛型类

详细阐述我的问题: 我想在我的应用程序中显示多个列表。他们是视觉/功能相同,但基本上是不同类型的,例如,IFruitsIVegetablesIGrains等的列表所以,我一直在想使一个组件有点像这样的:

@Component({ 
    selector: 'my-list-display', 
}) 
export class MyListDisplayComponent<T> { 
    private list: T[]; 

    // further code to display and perform operations on list... 
} 

它甚至是有道理的? 是否有替代方案来实现这一目标? 请赐教!

+0

'通用类为component'太广你能具体吗? – Aravind

回答

0

如果你想表明属性list是一种选择类型,我知道有几个选项。您可以创建多个类实现的接口,如ListItem。您也可以创建一个abstract class ListItem,其中多个类别为extend/implement。例如

export abstract class ListItem { 
    public name: string; 
} 

export class Fruit implements ListItem { 
    public name: string; 
} 

export class Vegetable extends ListItem { 
} 


@Component({ 
    selector: 'my-list-display', 
}) 
export class MyListDisplayComponent { 
    private list: ListItem[]; 

    // further code to display and perform operations on list... 
} 

使用的界面将类似

export interface ListItem { 
    name: string; 
} 

export class Fruit implements ListItem { 
    public name: string; 
} 

@Component({ 
    selector: 'my-list-display', 
}) 
export class MyListDisplayComponent { 
    private list: ListItem[]; 

    // further code to display and perform operations on list... 
} 

如果Fruit类实际上FruitComponent是,用法是一样的(即FruitComponent implements ListItem