2017-09-27 30 views
2

両方のコンポーネントがngForの場合、コンポーネント参照を別のコンポーネントに渡すにはどうすればよいですか?ngFor(角)内のコンポーネントへのコンポーネント参照の受け渡し

<div *ngFor="let address of fields?.addresses"> 
    <div> 
     <o-lookup-dropdownlist></o-lookup-dropdownlist> 
     <o-lookup-dropdownlist [cascade]="!!!linkToUpper o-lookup-dropdownlist !!!!"></o-lookup-dropdownlist> 
    </div> 
</div> 

そのような何か:

<div *ngFor="let address of fields?.addresses; let i = index"> 
    <div> 
     <o-lookup-dropdownlist #first{{i}}></o-lookup-dropdownlist> 
     <o-lookup-dropdownlist [cascade]="'first' + i"></o-lookup-dropdownlist> 
    </div> 
</div> 

ユースケース:(@methgaard)
第二のDropDownListは、最初の(国の結果に依存するので、私はコンポーネントの参照を必要とする - ために>ポストコード例)。コンポーネント参照がある場合は、最初の値があるまで、2番目のo-lookup-dropdownlistを無効にできます。 (国を選択する前に、郵便番号を選択することに意味はありません)。 ng-templateため、角度は独自のスコープを持っているEmbeddedViewを作成

<ng-template ngFor [ngForOf]="fields?.addresses" let-address="$implicit" let-i="index"> 
    <div>...</div> 
</ng-template> 

*ngFor="let address of fields?.addresses; let i = index"

+2

は、あなただけの '#のfirst'を使用すると、' '[カスケード] =「最初」のようにそれを渡す試したことがありますか?もしあなたがそれを試してみることをアドバイスしていないのであれば、上記のロジックを試してみたら – yurzui

+0

はどんなエラーになるのですか? –

+0

なぜコンポーネントリファレンスが必要ですか? – methgaard

答えて

2

拡張バージョンは次のようになります。

だから、あなただけの*ngFor内の同じテンプレートの参照変数を使用することができます。

<o-lookup-dropdownlist #first></o-lookup-dropdownlist> 
<o-lookup-dropdownlist [cascade]="first"></o-lookup-dropdownlist> 
関連する問題