过滤待办事项

现在让我们继续添加功能,允许用户过滤他们的待办事项,以便他们可以查看活动、已完成或所有事项。

先决条件 熟悉核心 HTMLCSSJavaScript 语言,了解 终端/命令行
目标 为我们的应用程序添加过滤功能。

我们的过滤代码

过滤项目基于之前添加到 app.component.tsfilter 属性

ts
filter: 'all' | 'active' | 'done' = 'all';

filter 的默认值为 all,但它也可以是 activedone

添加过滤控件

app.component.html 中,将以下 HTML 添加到“添加”按钮下方,但在列出项目的节之前。在以下代码段中,您 HTML 中的现有部分被注释掉了,因此您可以确切地看到在哪里放置按钮。

html
<!-- <button class="btn-primary" (click)="addItem(newItem.value)">Add</button>
 -->

<!-- Buttons that show all, still to do, or done items on click -->
<div class="btn-wrapper">
  <button
    class="btn btn-menu"
    [class.active]="filter == 'all'"
    (click)="filter = 'all'">
    All
  </button>

  <button
    class="btn btn-menu"
    [class.active]="filter == 'active'"
    (click)="filter = 'active'">
    To Do
  </button>

  <button
    class="btn btn-menu"
    [class.active]="filter == 'done'"
    (click)="filter = 'done'">
    Done
  </button>
</div>

<!-- <h2>{{items.length}} item(s)</h2>
         <ul>... -->

点击按钮会更改 filter 值,这将决定显示的 items 以及 Angular 应用于活动按钮的样式。

  • 如果用户点击“全部”按钮,则会显示所有项目。
  • 如果用户点击“待办事项”按钮,则仅显示 done 值为 false 的项目。
  • 如果用户点击“已完成”按钮,则仅显示 done 值为 true 的项目。

使用方括号 [] 的类属性绑定控制按钮的文字颜色。类绑定 [class.active]filter 值与表达式匹配时应用 active 类。例如,当用户点击“已完成”按钮时,它会将 filter 值设置为 done,则 filter == 'done' 的类绑定表达式将评估为 true。当 filter 值为 done 时,Angular 会将 active 类应用于“已完成”按钮以使文字颜色变为绿色。只要用户点击其他按钮之一,filter 的值就不再是 done,因此绿色文字颜色不再适用。

总结

太快了!由于您已经在 app.component.ts 中有了 filter 代码,您只需编辑模板即可提供用于过滤项目的控件。我们接下来的(也是最后一篇)文章将介绍如何构建您的 Angular 应用以备生产,并提供进一步的资源来继续您的学习之旅。