【发布时间】:2016-06-28 16:06:25
【问题描述】:
我想将数据发送到我所有称为“模态”的元素,但只有其中一个接收消息。
我有一个服务:
@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);
}
}
一切正常,但是当我想在任何其他组件中注入服务并向其他订阅者发送消息时,问题就出现了。我不知道如何为“模态”的所有元素类型共享消息。我可以挂钩 DOM 元素,但组件有问题。我如何将所有“模态”元素挂钩到可观察的?
感谢您的帮助
【问题讨论】:
-
你们在哪里提供
ModalService?您在其中注入它的每个组件或仅全局注入一次(bootstrap()或根组件)? -
我编辑我的帖子(组件代码)。我在每个组件中注入服务。
标签: javascript typescript angular observable