Angular ограничивает сервис только одним деревом компонентов

Я хочу реализовать службу и позволить ей предоставлять только один именованный компонент или модуль, а не какой-либо другой компонент или модуль.

Поэтому всякий раз, когда кто-либо пытается предоставить эту услугу другому компоненту, он получает сообщение об ошибке, и программа не должна компилироваться.

Есть ли способ сделать это?

Заранее спасибо.

2 ответа

Если вы предоставите его компоненту, он будет доступен только этому компоненту и его дочерним элементам:

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

См.: https://angular.io/guide/providers#limiting-provider-scope-with-components.

Способ ограничить область действия модулем или компонентом:

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

Таким образом, если этот компонент сам по себе не имеет дочерних элементов, фактически это единственный именованный компонент, имеющий к нему доступ. Другие компоненты получат сообщение об ошибке инжектора.

Попробуйте следующее: предоставьте сервис как класс в компоненте, он должен создать один экземпляр для этого компонента, и вы можете удалить поставщика из модуля.

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

и нулевой инъекционный, инъекционный не предоставляется ни в какой области автоматически...

      @Injectable()
export class Service {}
Другие вопросы по тегам