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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Angular 路线图实战/课时/服务与依赖注入
RawBlame
课时目录12 节

Angular 路线图实战

  1. 01Angular 入门与 CLI
  2. 02组件与生命周期
  3. 03模板与数据绑定
  4. 04指令与管道
  5. 05表单
  6. 06服务与依赖注入
  7. 07HttpClient 与安全
  8. 08Router 与懒加载
  9. 09RxJS 与 Signals
  10. 10SSR、测试与 i18n
  11. 11NgModule 与库
  12. 12综合练习

服务与依赖注入

inject()、NgRx/NGXS 概览。

35 分钟

服务与依赖注入

路线图「Services & DI」:Service 承载业务逻辑,依赖注入(DI) 由框架创建并注入实例。这是 Angular 与 React 核心(需 Context/第三方)的最大架构差异之一;概念接近 Vue 的 provide/inject,但 Angular 更系统化。

学习目标

  • 创建 @Injectable 服务与 providedIn: 'root'
  • 在组件中用 inject() 获取依赖
  • 了解 NgRx / NGXS 在大型应用中的角色

核心概念

定义与注入

import { Injectable, inject } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";

export interface Track { slug: string; title: string; }

@Injectable({ providedIn: "root" })
export class TrackService {
  private http = inject(HttpClient);

  list(): Observable<Track[]> {
    return this.http.get<Track[]>("/api/tracks");
  }

  getBySlug(slug: string): Observable<Track> {
    return this.http.get<Track>(`/api/tracks/${slug}`);
  }
}

providedIn: 'root' → 应用级 单例,全组件共享。

组件消费

@Component({ /* ... */ })
export class TrackPageComponent implements OnInit {
  private trackService = inject(TrackService);
  tracks: Track[] = [];

  ngOnInit() {
    this.trackService.list().subscribe((data) => (this.tracks = data));
  }
}

与 React/Next 对照

AngularReactNext.js
@Injectable + DIContext / 模块单例Server 模块 / fetch 封装
inject(TrackService)useContext / 自定义 hookimport 服务端函数
NgRxRedux / Zustand同 React + 服务端状态

路线图「State Management」节点:小应用 Service 足够;大 B 端可选 NgRx(类似 Redux 单向数据流)。

练习

  • ng generate service track 并实现 list()
  • 组件用 inject() 替换直接 fetch

小结

Service 承载逻辑,DI 解耦组件与依赖。 下一课 HttpClient。

加载本节练习…
← 上一课表单下一课 →HttpClient 与安全