Ho il codice seguente e funziona bene, ciò che fa è ngPer ripetere per creare una colonna per ogni colonna nell'oggetto colonna.Come posso mostrare solo i risultati in cui card.column valore corrisponde a column.id in angular2
Attualmente mostra ogni carta dall'oggetto delle carte in ogni colonna.
quello che voglio fare è presentarsi solo carte nella colonna in cui column.id = card.column
Come posso modificare il mio codice per fare questo?
import {Input, Output, EventEmitter, Component, Injectable} from 'angular2/core'
import {NgFor} from 'angular2/common'
import {Observable} from 'rxjs/Observable';
interface Card {
id?: number;
title?: string;
column?: number;
}
@Injectable()
export class DataService {
cards$: Observable<Array<Card>>;
private _cardsObserver: any;
private _dataStore: Array<Card>;
constructor(){
this._dataStore = [
{id: 1, title: 'Card A', column: 1},
{id: 2, title: 'Card B', column: 2},
{id: 3, title: 'Card C', column: 2}
];
this.cards$ = new Observable(observer =>
this._cardsObserver = observer).share();
}
loadCards() {
this._cardsObserver.next(this._dataStore);
}
addCard(){
this._dataStore.push({id: 4, title: 'Card D', column: 3});
this._cardsObserver.next(this._dataStore);
}
getColumns(){
var columns = [
{id: 1, title: 'Column One'},
{id: 2, title: 'Column Two'},
{id: 3, title: 'Column Three'}
];
return columns;
}
}
@Component({
selector: 'app',
providers: [DataService],
directives: [],
template: `
<button (click)="dataService.addCard()">Add Card</button>
<div class="columns" *ngFor="#c of columns">
{{c.title}}
<div class="card" *ngFor="#card of cards">{{card.title}}</div>
</div>
`
})
export class App {
private cards: Array<Card>;
private columns: any;
constructor(public dataService: DataService) {
dataService.cards$.subscribe(updatedCards => this.cards = updatedCards);
dataService.loadCards();
this.columns = dataService.getColumns();
}
}
product.column? intendevi carta? E 'questo quello che stai cercando? : https://angular.io/docs/js/latest/api/common/NgIf-directive.html – Langley
giusto, card.column. –
senza modificare troppo il tuo esempio puoi aggiungere qualcosa come '* ngIf =" card.colum == column.id "' o usare una pipe per filtrarli nel ngFor https://angular.io/docs/ts/latest /api/common/SlicePipe-class.html ma potresti voler riformattare la struttura dei dati per farlo in un modo più performante in modo da non doverli iterare tutti per ogni colonna – Langley