[Angular 2] Build a select dropdown with *ngFor in Angular 2
We want the start-pipe more flexable to get param, so when using it, we pass a second param as status:
<li *ngFor="#todo of todoService.todos | started : 'started'">
It will be handled as a second param which is an array of the transform() function:
transform(todos, [status]){ return todos.filter( (todoModel) => { // Only showing the todo starts with 'e' return todoModel.status === status; } ) }
So No we will only pipe 'started' status. We need a selector to handle the status:
import {Component, EventEmitter, Output} from 'angular2/core';
@Component({
selector: "status-selector",
template: `
<div>
<select #sel (change)="selectedStatus.emit(sel.value)">
<option *ngFor="#status of statuses">
{{status}}
</option>
</select>
</div>
`
})
export class StatusSelector{
@Output() selectedStatus = new EventEmitter();
statuses = ["started", "completed"];
ngOnInit(){
this.selectedStatus.emit(this.statuses[0]);
}
}
And pass the output to the list:
template: ` <todo-input></todo-input> <status-selector (selectedStatus)="status=$event"></status-selector> <todo-list [status]="status"></todo-list> `
Then in the list, we use that selected status:
<li *ngFor="#todo of todoService.todos | started : status">
------------------------------

浙公网安备 33010602011771号