How can I pass a generic type parameter to an Angular2 component?

Thorsten Westheider picture Thorsten Westheider · May 15, 2016 · Viewed 20k times · Source

Let's say I got a component with a fixed input parameter type,

@Component({
    selector: 'fixed',
    template: '<div>{{value}}</div>'
})
export class FixedComponent {
    @Input() value: string;
}

How do I go about making that parameter type generic, i.e.

@Component({
    selector: 'generic',
    template: '<div>{{value}}</div>'
})
export class GenericComponent<T> {
    @Input() value: T;
}

That is, how do I pass the type in the template of the parent component?

<generic ...></generic>

Answer

Aaron S picture Aaron S · Jan 3, 2017

It seems that when using AOT compilation the only way to do this is to replace the generic type with 'any'. See https://github.com/angular/angular/issues/11057