2016-08-31 1 views
2

У меня есть класс:Фильтра массив объектов с трубой Угловой 2

export class Todo { 
    public id: number; 
    public name: string; 
    public isCompleted: boolean; 
    public dateCreated: Date; 
    public userName: string; 
} 

Служба:

getTodos(): Observable<Todo[]> { 
    return this.http.get(this.todosUrl) 
       .map(this.extractData) 
       .catch(this.handleError); 
    } 

    private extractData(res: Response) { 
    let body = res.json(); 
    return body || { }; 
    } 

В моем компоненте:

getTodos(){ 
    this.todoService.getTodos() 
     .subscribe(
     todos => this.todos = todos, 
     error => this.errorMessage = <any>error 
    ); 
    } 

и HTML-файл:

<div class="ui large selection animated divided list"> 
      <a *ngFor="let todo of (todos | todoFilter:false)" class="item"> 
      <div class="right floated content"> 
       <div class="ui vertical animated negative button" tabindex="0"> 
       <div class="hidden content">Delete</div> 
       <div class="visible content"> 
        <i class="fa fa-trash" aria-hidden="true"></i> 
       </div> 
       </div> 
      </div> 
      <i class="minus square outline icon"></i> 
      <div class="content"> 
       <div class="header">{{todo.name}}</div> 
       <div class="description">{{todo.dateCreated | date:"MMM-dd-yyyy"}}</div> 
      </div> 
      </a> 
     </div> 

Проблема в том, что когда я пытаюсь использовать этот канал для фильтрации завершенных todos, я продолжаю получать сообщение об ошибке «Не могу прочитать фильтр свойств» неопределенного. Я сделал что-то неправильно или есть способы отфильтровать его, не используя трубку? Моя труба:

transform(allTodos: Todo[], args?: boolean){ 
    if (allTodos === null) { 
     return null; 
    } 
    return allTodos.filter(todo => todo.isCompleted); 
    } 

спасибо.

ответ

2

Попробуйте заменить if (allTodos === null) только if (!allTodos) Я думаю, что проблема в том, что вы получаете в .filter даже в то время как ваш this.todos еще пуст, так как вы только проверить, что это не является нулевым.

+0

Спасибо, мой код начал работать! –

+0

Мое удовольствие, рад, что у вас это работает. –