[英]How can I pass a generic type parameter to an Angular2 component?
假设我有一个具有固定输入参数类型的组件,
@Component({
selector: 'fixed',
template: '<div>{{value}}</div>'
})
export class FixedComponent {
@Input() value: string;
}
我如何将该参数类型设为通用,即
@Component({
selector: 'generic',
template: '<div>{{value}}</div>'
})
export class GenericComponent<T> {
@Input() value: T;
}
也就是说,如何在父组件的模板中传递类型?
<generic ...></generic>
看来你可以在Angular 2子组件中使用泛型类型参数。
@Component({
selector: 'app-child',
template: '<p>Generic Child</p><p>{{cp}}</p>'
})
export class GenericChildComponent<T> {
@Input() cp: T;
}
import { GenericChildComponent } from './generic-child.component';
@Component({
selector: 'app-root',
template: '<app-child [cp]="p1"></app-child><hr /><app-child [cp]="p2"></app-child>',
directives: [GenericChildComponent]
})
export class ParentComponent {
p1: string = 'property 1';
p2: number = 100;
}
似乎在使用AOT编译时 ,唯一的方法是用'any'替换泛型类型。 请参阅https://github.com/angular/angular/issues/11057
我只是玩角度,我使用ViewChild通过内部和外部组件使其工作。
在组件的内部组件声明中就像:
@Injectable()
@Component({
selector: 'inner-selector',
templateUrl: ...,
styleUrls: ...,
directives: [
...]
export class InnerComponent**<T>** ...
在路由器调用的外部组件中我做了:
import {Component} from '@angular/core';
import {InnerComponent} from '../components/inner.component';
import {ViewChild } from '@angular/core';
@Component({
selector: 'demo-app',
template: '<inner-selector></inner-selector>',
directives: [InnerComponent]
})
export class TestPage {
@ViewChild(InnerComponent)
**private innerComponent:InnerComponent<MPSalesHeader>;**
};
我不知道这是一个好方法,但它有效。
问候!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.