providedIn any 和 root 有什么区别
What is the difference between providedIn any and root
在 Angular 9 中,可注入装饰器选项 providedIn
有一个名为 any
的新值。 root
和 any
有什么区别?
在我使用 any
的情况下,服务是否被视为单例?
@Injectable({providedIn: 'any'})
class UsefulService {
}
root
和 any
之间的区别 offical documentation :
root
: 大多数应用程序中的应用程序级注入器。
platform
: 所有人共享的特殊单例平台注入器
页面上的应用程序。
any
: 接收解析的NgModule注入器。
更多详情请参考此article。
在我使用 any
的情况下,服务是否被视为单例? - 否
angular 9 引入新的可注入装饰器选项 ProvidedIn 除了之前的 root
和模块选项,现在我们有两个额外的选项
platform
, any
root— This tells Angular to provide the service in the application root level and the service will be created once (singleton service
) and provide the same instance in every module that injects the token.
any— Provides a unique instance in every module (including lazy
modules) that injects the token.
platform— Specifying providedIn: 'platform' makes the service
available in a special singleton platform injector that is shared by
all applications on the page.
a detailed look at Angular's 'root' and 'any' provider scopes
我认为提供的答案不是很清楚。但是,@jkonst、@schrödingcöder 和@Bruce 在评论中是正确的。
对于 Google、
发送到这里的任何人
any 不在每个模块中提供唯一实例。 (应该只在每个共享模块中说)
这意味着在每个 注入范围
中有一个实例
来自 https://angular.io/guide/providers
With providedIn: 'any', all eagerly loaded modules share a singleton instance; however, lazy loaded modules each get their own unique instance, as shown in the following diagram.
在 Angular 9 中,可注入装饰器选项 providedIn
有一个名为 any
的新值。 root
和 any
有什么区别?
在我使用 any
的情况下,服务是否被视为单例?
@Injectable({providedIn: 'any'})
class UsefulService {
}
root
和 any
之间的区别 offical documentation :
root
: 大多数应用程序中的应用程序级注入器。platform
: 所有人共享的特殊单例平台注入器 页面上的应用程序。any
: 接收解析的NgModule注入器。
更多详情请参考此article。
在我使用 any
的情况下,服务是否被视为单例? - 否
angular 9 引入新的可注入装饰器选项 ProvidedIn 除了之前的 root
和模块选项,现在我们有两个额外的选项
platform
, any
root— This tells Angular to provide the service in the application root level and the service will be created once (singleton service ) and provide the same instance in every module that injects the token.
any— Provides a unique instance in every module (including lazy modules) that injects the token.
platform— Specifying providedIn: 'platform' makes the service available in a special singleton platform injector that is shared by all applications on the page.
a detailed look at Angular's 'root' and 'any' provider scopes
我认为提供的答案不是很清楚。但是,@jkonst、@schrödingcöder 和@Bruce 在评论中是正确的。
对于 Google、
发送到这里的任何人any 不在每个模块中提供唯一实例。 (应该只在每个共享模块中说)
这意味着在每个 注入范围
中有一个实例来自 https://angular.io/guide/providers
With providedIn: 'any', all eagerly loaded modules share a singleton instance; however, lazy loaded modules each get their own unique instance, as shown in the following diagram.