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 {}