2017-05-08 4 views
1

レンダリングオブジェクトをいくつかのグリッドカーコンポーネントで観測可能にしたいと思います。また、コンポーネントの変数に基づいてグリッドカードの数をgridCols*maxRows*ngIfの条件チェックを使用して数値に制限したいとします。角:子要素のインデックス値を参照して* ngForと* ngIfの両方を使用

*ngFor*ngIfの両方を同じ要素に同時に使用することはできません。だから*ngForに基づいて条件付きでレンダリングされるグリッドカードの要素をラップするには<template ngFor ...> を使用する必要があります。これを考えると、indexまたはcontentの変数を*ngForから*ngIfにどのようにすることができますか。何のディレクティブがに設定された "EXPORTAS" ではありません

「インデックス:私は、このようなエラーメッセージを表示して、この

#i="index" 

のようなものを試してみました

<template ngFor let-content [ngForOf]="contentObjectsObservable | async" let-i="index" [ngForTrackBy]="trackByFn"> 
    <grid-card *ngIf="i < gridCols*maxRows" [content]="content" [style.width.%]="gridCardWidth"></grid-card> 
</template> 

UPDATE "

+0

私は、最大行(または実際には最大のアイテム)を制限するためのスライスパイプを提案しています。https://angular.io/docs/ts/latest/api/common/index/SlicePipe-pipe.html –

+0

子要素のngForループのインデックス変数と内容変数をどのように参照できるかも知りたいです

+0

」は何か分かりません。作成したコンポーネントの場合は、@Input()index:int;などの入力を追加するだけです。 @GetResponse(); @Input()content:SomeType; 'それで'

答えて

1

* ngForステートメントにlet i = indexを入れて* ngForからインデックスを参照できます! 例:

<div *ngFor="let item of items; let i = index"> 
    <div *ngIf="i < (gridCols * maxRows)" class="row"> 
    <grid-card [content]="content" [style.width.%]="gridCardWidth"></grid-card> 
    </div> 
</div> 

は、あなたのコンポーネント内の数字としてgridColsとのmaxRowsが定義されていることを確認してください!

gridCols:number = <your number>; 
maxRows:number = <your number>; 

希望します。

関連する問題