用途:该技能建立在 @tanstack/table-core 与 getting-started 之上,聚焦 TanStack Table 在 Angular 中的状态管理。核心心智模型是:TanStack Table 主要是状态协调器,除非其他系统需要读取、持久化或驱动状态,否则应保持状态内部化。未提供 initialState、atoms、state 或 on[State]Change 时,表格拥有全部已注册状态切片。table.baseAtoms 是内部可写原子,table.atoms 是各切片当前拥有者的只读派生原子,table.store 将其合并为一个只读扁平 store。Angular 适配器用 Angular signal 支撑原子,模板、computed 与 effect 中的读取会参与追踪;injectTable 初始化器内的 signal 读取还会重跑初始化器并调用 setOptions。状态按特性划分,缺少分页状态或 API 通常意味着缺少 rowPaginationFeature。
主要能力与用法:稳定特性与列应提升到初始化器之外,数据以 signal 返回且不要内联映射或切片。可用 injectTable 配合 tableFeatures、rowPaginationFeature 构建表格,并通过 computed 读取 table.atoms.pagination.get().pageIndex。跨系统状态优先使用 @tanstack/angular-store 的 createAtom 作为外部原子,通过 atoms 传入,可供给 Query 而不让每次状态写入重跑表格初始化器。简单受控状态可用 Angular signal 读取 state.<slice> 并配对应回调,回调需处理原始值与更新函数:typeof next === 'function' ? this.pagination.update(next) : this.pagination.set(next)。
状态归属与重置:每个切片只应有一个拥有者。本地交互优先内部状态与特性 API;initialState 用于起始或重置值,后续变更不会重置当前状态;跨系统状态优先稳定原子;简单受控状态用 signal 加回调。外部原子优先于受控状态,受控状态会同步进内部基础原子。全局 v8 onStateChange 已移除,需观察全部状态变更时订阅 table.store。更新优先使用 setSorting、nextPage、toggleVisibility、toggleSelected 等特性方法;直接写基础原子是内部状态的罕见逃生口。特性重置默认使用 table.initialState,传 true 则请求特性默认值,并可更新外部拥有者;核心 table.reset() 只重置内部基础原子。类型上使用 PaginationState 等特性类型,需要完整注册状态类型时用 TableState<typeof features>。
限制与常见错误:不要冗余包装原子,table.atoms 已桥接到 Angular signal,一次追踪读取即可;受控 signal 写入会重跑初始化器,静态工作必须留在外部;回调收到值或更新函数,直接赋值函数会破坏状态;不要给同一状态切片多个拥有者,外部原子或 state 会覆盖初始状态。API 发现可查看 node_modules/@tanstack/angular-table/dist/types/ 与 reactivity.d.ts,以及 @tanstack/angular-store/dist/ 和已安装核心特性源码。