CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Angular 核心/课时/RxJS 入门
RawBlame
课时目录12 节

Angular 核心

  1. 01Angular 是什么
  2. 02CLI 与项目结构
  3. 03组件与模板
  4. 04指令
  5. 05服务与依赖注入
  6. 06HttpClient
  7. 07Router
  8. 08表单
  9. 09RxJS 入门
  10. 10Signals 新特性
  11. 11Angular vs React/Vue
  12. 12综合练习

RxJS 入门

Observable、pipe、async 管道。

30 分钟

RxJS 入门

Angular 深度集成 RxJS:HttpClient、Router 事件、表单 valueChanges 均返回 Observable。这是 Angular 与 React 核心 / Vue 3 核心 最大差异之一——读企业 Angular 代码必须懂基础操作符。

学习目标

  • 理解 Observable 与 Promise 的区别
  • 使用 pipe、map、filter、switchMap
  • 在模板用 async 管道订阅

核心内容

Observable 基础

import { of, interval } from "rxjs";
import { map, take, filter } from "rxjs/operators";

of(1, 2, 3).pipe(map((n) => n * 10), filter((n) => n > 15)).subscribe(console.log);

Observable 可多值、可取消;Promise 只 resolve 一次。常用操作符:map、filter、switchMap、catchError、debounceTime。

HttpClient 链式

searchTracks(keyword: string) {
  return this.http.get<Track[]>("/api/tracks").pipe(
    map((list) => list.filter((t) => t.title.includes(keyword))),
    catchError(() => of([])),
  );
}

switchMap 防竞态

this.route.paramMap.pipe(
  switchMap((params) => this.trackService.getBySlug(params.get("slug")!)),
).subscribe((track) => (this.track = track));

快速切换路由时,switchMap 取消上一次未完成的 HTTP。

async 管道

@Component({
  template: `
    @if (tracks$ | async; as tracks) {
      <ul>
        @for (t of tracks; track t.slug) {
          <li>{{ t.title }}</li>
        }
      </ul>
    }
  `,
})
export class TrackListComponent {
  tracks$ = inject(TrackService).list();
}

模板订阅,组件销毁时自动 unsubscribe。Signals 正在简化部分场景,存量项目 RxJS 仍无处不在。

练习

  • 搜索框 debounceTime(300) + switchMap 调 API
  • 用 async 管道替换手动 subscribe

小结

Observable + pipe 是 Angular 异步 lingua franca。 下一课 Signals。

加载本节练习…
← 上一课表单下一课 →Signals 新特性