在 Angular 9 中,可注入装饰器选项providedIn
有一个名为any
. root
和 和有什么不一样any
?
在我使用的情况下,服务是否被视为单例any
?
@Injectable({providedIn: 'any'})
class UsefulService {
}
在 Angular 9 中,可注入装饰器选项providedIn
有一个名为any
. root
和 和有什么不一样any
?
在我使用的情况下,服务是否被视为单例any
?
@Injectable({providedIn: 'any'})
class UsefulService {
}
angular 9 引入了可注入装饰器的新选项 ProvidedIn 除了之前的root
和模块选项外,现在我们还有两个额外的选项
platform
,any
root - 这告诉 Angular 在应用程序根级别提供服务,并且服务将被创建一次(单例服务 )并在注入令牌的每个模块中提供相同的实例。
any — 在注入令牌的每个模块(包括惰性模块)中提供唯一的实例。
platform — 指定 providedIn: 'platform' 使服务在一个特殊的单例平台注入器中可用,该注入器由页面上的所有应用程序共享。
我认为提供的答案并不是很清楚。但是,@jkonst、@schrödingcöder 和 @Bruce 在评论中是正确的。
对于谷歌发送到这里的任何人,
any不在每个模块中提供唯一的实例。(应该只在每个共享模块中说)
这意味着每个注入范围中有一个实例
来自https://angular.io/guide/providers
使用 providedIn: 'any',所有急切加载的模块共享一个单例实例;但是,每个延迟加载的模块都有自己唯一的实例,如下图所示。