Angular 向容器注册的角度服务,未指定;“提供给”;

Angular 向容器注册的角度服务,未指定;“提供给”;,angular,dependency-injection,inversion-of-control,Angular,Dependency Injection,Inversion Of Control,在根范围内的容器1)中注册服务,或者在特定模块范围内的容器2)中注册服务 所以在一般情况下,像这样: @Injectable({ providedIn: "root" }) @Injectable() 但是,我看到很多这样的代码: @Injectable({ providedIn: "root" }) @Injectable() 在这种情况下,服务将在哪个范围内注册?不指定作用域的含义是什么?这对树震动有何影响?对于@Injectable(),它在提供程序数组的组件级或模块级注册 组件级

在根范围内的容器1)中注册服务,或者在特定模块范围内的容器2)中注册服务

所以在一般情况下,像这样:

@Injectable({ providedIn: "root" })
@Injectable()
但是,我看到很多这样的代码:

@Injectable({ providedIn: "root" })
@Injectable()

在这种情况下,服务将在哪个范围内注册?不指定作用域的含义是什么?这对树震动有何影响?

对于
@Injectable()
,它在
提供程序
数组的组件级或模块级注册

组件级别:

@Component({
    selector: 'my-app',
    template: '<h1>{{ title }}</h1>',
    providers: [ExampleService]
})

直到Angular 5,我们必须强制在组件或模块的提供者中添加服务。从Angular 6开始引入了
@Injectable({providedIn:“root”})
,这意味着默认情况下,它被添加到app.module中,即根模块中。有3种方法:1)指定“root”并且它无处不在;2)指定“MyModule”并且它仅在“MyModule”中可用;3)不指定任何内容,如果你像代码中显示的那样引用它,它在任何地方都可用?是的,你是对的。参观并前往提供服务的部门,这一点已经得到了很好的解释