2016-05-15 9 views
9

、のは、私が固定された入力パラメータタイプのコンポーネントを持って言うジェネリック型パラメータをAngular2コンポーネントに渡すにはどうすればよいですか?

@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> 
+0

わかりませんが、「T」ではなく「any」を使用できます。オプションで、別の入力を持つことができます... @Input( 'type')type:Type;そのような型を渡すと、その型にあなたのanyをキャストする必要があります。 –

答えて

2

私はちょうど角度で遊んでいると私は、内部および外部コンポーネントを持つことで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>;** 
}; 

が、これは良い方法ですが、それ働いた。

よろしくお願いいたします。

0

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; 
} 

これはViewChild技術のいずれかがaboveを提案したり、基本クラスの技術にhereを提案頼ることなく動作します。

+1

親コンポーネントにジェネリックパラメータを割り当てる場所はどこですか? – batressc

+0

彼は子コンポーネント[cp] = "p2"を割り当てることによってそれを行います –

+0

しかしこれは完全な解決法ではありません、Tの初期化を遅らせます。あなたがコンストラクタに注入されている別のジェネリック型のTを使用する –

関連する問題