1

我想实现一项服务,让它只提供给一个命名组件或模块,而不提供给任何其他组件或模块。

因此,每当有人试图向另一个组件提供该服务时,他们都会遇到错误并且程序不应编译。

有没有办法做到这一点?

提前致谢。

编辑:

我猜你误解了我的问题。我是说除了一个组件树之外,没有开发人员可以将该服务添加到提供程序数组中的任何位置。

4

2 回答 2

0

试试这个:将服务作为组件中的一个类提供,它必须为该组件创建一个实例,并且您可以从模块中删除提供者。

@Component({
  selector: "component",
  providers: [{ provide: Service, useClass: Service }]
})

和空注入,注入不会自动在任何范围内提供......

@Injectable()
export class Service {}
于 2022-01-21T08:49:45.207 回答
0

如果您将其提供给组件,它将仅对该组件及其子组件可用:

@Component({
  selector: "component",
  providers: [Service]
})

请参阅:https ://angular.io/guide/providers#limiting-provider-scope-with-components 。

一种将范围限制为模块或组件的方法:

@Injectable({ providedIn: HelloComponent })
export class Service {}

所以如果这个组件本身没有子组件,它实际上是唯一可以访问它的命名组件。其他组件将收到喷油器错误

于 2021-02-28T08:35:23.143 回答