我想实现一项服务,让它只提供给一个命名组件或模块,而不提供给任何其他组件或模块。
因此,每当有人试图向另一个组件提供该服务时,他们都会遇到错误并且程序不应编译。
有没有办法做到这一点?
提前致谢。
编辑:
我猜你误解了我的问题。我是说除了一个组件树之外,没有开发人员可以将该服务添加到提供程序数组中的任何位置。
我想实现一项服务,让它只提供给一个命名组件或模块,而不提供给任何其他组件或模块。
因此,每当有人试图向另一个组件提供该服务时,他们都会遇到错误并且程序不应编译。
有没有办法做到这一点?
提前致谢。
编辑:
我猜你误解了我的问题。我是说除了一个组件树之外,没有开发人员可以将该服务添加到提供程序数组中的任何位置。
试试这个:将服务作为组件中的一个类提供,它必须为该组件创建一个实例,并且您可以从模块中删除提供者。
@Component({
selector: "component",
providers: [{ provide: Service, useClass: Service }]
})
和空注入,注入不会自动在任何范围内提供......
@Injectable()
export class Service {}
如果您将其提供给组件,它将仅对该组件及其子组件可用:
@Component({
selector: "component",
providers: [Service]
})
请参阅:https ://angular.io/guide/providers#limiting-provider-scope-with-components 。
一种将范围限制为模块或组件的方法:
@Injectable({ providedIn: HelloComponent })
export class Service {}
所以如果这个组件本身没有子组件,它实际上是唯一可以访问它的命名组件。其他组件将收到喷油器错误