gpt4 book ai didi

javascript - 使用 observable - angular2 向所有订阅者元素发送数据

转载 作者:行者123 更新时间:2023-11-30 15:58:43 25 4
gpt4 key购买 nike

我想将数据发送到我所有名为“模态”的元素,但只有其中一个接收消息。

我有一个服务:

@Injectable()
export class ModalService {

private _isOpen = new Subject();
isOpen$ = this._isOpen.asObservable();

open(id: string) {
this._isOpen.next({isOpen: true, id: id});
}

close(id: string) {
this._isOpen.next({isOpen: false, id: id});
}

和组件:

import {Component, Input} from 'angular2/core';
import {Observable} from 'rxjs/Observable';
import {Subject} from 'rxjs/Subject';

import {ModalService} from './modal.service';


@Component({
selector: 'modal',
template: `
<ng-content></ng-content>`,
styleUrls: ['app/workshop/modal.component.css'],
providers: [ModalService],

})

export class ModalComponent {

@Input() ID;

private show = false;

constructor(private _modal: ModalService) {

this._modal.isOpen$.subscribe(
(value) => {
console.log(value)
if(this.ID === value.id) {
this.show = value.isOpen;
}
}
);

}

open() {
this._modal.open(this.ID);
}

close() {
this._modal.close(this.ID);
}

}

一切正常,但当我想在任何其他组件中注入(inject)服务并向其他订阅者发送消息时,问题就出现了。我不知道如何为“模态”的所有元素类型共享消息。我可以 Hook DOM 元素,但我对组件有问题。我如何将所有“模态”元素 Hook 到可观察的?

感谢帮助

最佳答案

事实上,您需要为所有这些组件共享同一个实例。为此,请在主要组件的 providers 属性中设置服务:

@Component({
(...)
providers: [ ModalService ]
})
export class AppComponent {
(...)
}

关于javascript - 使用 observable - angular2 向所有订阅者元素发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081174/

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