gpt4 book ai didi

angular - 在多个 boostrapped 组件之间共享服务

转载 作者:太空狗 更新时间:2023-10-29 18:21:41 24 4
gpt4 key购买 nike

我创建了 2 个单独引导的组件(在 2 个不同的 View 中),并且我尝试在这 2 个组件之间共享一个独特的服务(单例)。该服务用于操作这些组件之一。我的服务:

@Injectable()
export class ModalContainerService {
private component: ModalContainer;

constructor() {}

setComponent(component: ModalContainer) {
this.component = component; <-- for holding the reference to my component
}

showFirst() {
this.component.showFirst();
}

addModal(modal: Type) {
this.component.addModal(modal);
}
}

第一个组件:

export class ModalContainer {
private modals: Array<ComponentRef> = [];

constructor(
private loader: DynamicComponentLoader,
private element: ElementRef,
private modalService: ModalContainerService) {
modalService.setComponent(this); <-- where I set the component reference for my service
}

showFirst(): void {
this.modals[0].instance.show();
}

addModal(modal: Type) {
this.loader
.loadIntoLocation(modal, this.element, 'modalContainer')
.then((ref) => {
this.modals.push(ref);
});
}
}

bootstrap(ModalContainer, [ModalContainerService]);

我的第二个组件是从第一个组件中分离出来的:

export class TextboxAutocomplete {    
constructor(private modelService: ModalContainerService) {}
}

但是 ModalContainerService 不再包含我的第一个组件的引用......是否可以在 2 个单独引导的组件之间共享数据/服务?

最佳答案

我没有得到你想要共享的服务,因此我使用 FooService 作为名称。

在 Angular 外部创建 FooService 实例,然后将值作为提供者传递给 booth bootstrap()

var fooService = new FooService();
bootstrap(AppComponent1, [provide(FooService, {useValue: fooService})]);
bootstrap(AppComponent2, [provide(FooService, {useValue: fooService})]);

关于angular - 在多个 boostrapped 组件之间共享服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com