我有一个库,其中有一个组件,它有一个提供者,比如so-
@Component({
selector: "lib-layer-list-widget",
templateUrl: "./layer-list-widget.component.html",
styleUrls: ["./layer-list-widget.component.css"],
providers: [LayerListWidgetService],
})
export class LayerListWidgetComponent {}
该组件正在我的angular项目中呈现,
该服务具有我想从项目中的组件中使用的方法。
示例:
import {
LayerListWidgetService,
} from "my-lib";
@Component({
selector: "app-example",
templateUrl: "./app-example.component.html",
styleUrls: [],
})
export class AppExampleComponent {
constructor( private layerListWidgetService: LayerListWidgetService) {
let elements = this.layerListWidgetService.getLayerListElements();
}
}
问题是,这无法正常工作,因为我在这里引用的实例与作为组件提供程序创建的实例不同
我试着阅读文档并四处搜索,但找不到具体的答案。
有没有办法从另一个组件访问组件的提供程序(在库中(?
删除组件级别的提供者,并将其添加到NgModule级别的提供者数组中。
即
@NgModule({
providers: [LayerListWidgetService]
})
组件有自己的注入器,注入器与同一树中的其他组件形成层次结构。但是,如果您将提供程序添加到NgModule,它就会注册到最近的NgModule注入器(即惰性加载模块或根注入器(。使用同一注入器(或分层注入器(的服务可以在同样使用同一个注入器的组件之间共享。