You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 14+中ProvidedIn: 'any'已弃用,求合适替代方案

Angular 14+ 中 providedIn: 'any' 的替代方案

providedIn: 'any' 的原行为是:所有预加载模块共享同一个服务实例,每个懒加载模块拥有独立的服务实例,该配置在Angular 14+已被弃用,以下是精准复刻原行为的替代方案:

具体实现步骤

  • 配置服务的根注入器共享实例:将服务的providedIn设置为'root',这样所有预加载模块会自动共享根注入器中的服务实例
  • 为懒加载模块声明独立实例:在每个需要独立实例的懒加载模块的providers数组中显式添加该服务,Angular会为这个懒加载模块创建专属的服务实例

代码示例

服务定义

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root' // 预加载模块共用根实例
})
export class SharedService {
  // 服务业务逻辑
}

懒加载模块配置

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SharedService } from '../shared.service';

@NgModule({
  imports: [CommonModule],
  providers: [SharedService] // 该懒加载模块拥有独立实例
})
export class LazyFeatureModule { }

补充说明

这种方式完全匹配providedIn: 'any'的原有行为逻辑,唯一区别是需要手动在懒加载模块中注册服务,也规避了原配置行为不够直观的问题——这也是Angular官方弃用any的原因之一。

内容的提问来源于stack exchange,提问作者skouch2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:16:23