我不知道我在做什么错在这里...
基本上我有2个兄弟姐妹组件的第一部分得到了一些数据,我想与大家分享的兄弟组件数据,所以我做了一个服务
服务
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {
// Individual Data Source
private dataSource = new BehaviorSubject<Object>({});
// Individual Data Source
data = this.dataSource.asObservable();
// Individual Data Source
updateData(data) {
this.dataSource.next(data);
}
}
然后在我的第一个组件...
this.activatedRoute.params.subscribe(params => {
this.id = params.id;
this._dataNotification.getSingledataNotification(this.id)
.subscribe(result => {
this.data = result;
this._dataService.updateData(this.data);
});
});
然后在我的第二个组成部分..
getData() {
this._dataService.data.subscribe((result) => {
this.data = result;
console.log(this.data);
});
}
基本上所发生的事情是在我的第一个组件即时得到的数据对象回来了,它传递将在下次的功能,然后在我的第二个组成部分即时得到的数据,但是当我的控制台日志,我只拿回一个空对象?
任何想法,我做错了什么?
编辑
我把了updateData功能在onChanges生命周期事件,现在它的工作原理..
多谢你们
这一个创建一个服务来处理消息的事件。
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class MessageService {
private subject = new Subject<Message>();
send(key: string, value: any) {
this.subject.next({ key, value });
}
get(): Observable<Message> {
return this.subject.asObservable();
}
}
class Message {
constructor(
public key: string,
public value: any) { }
}
这一个听的活动,并获得当事件执行某事。
import { Subscription } from 'rxjs/Subscription';
private subscription: Subscription;
constructor(
private messageService: MessageService,
) {}
ngOnInit() {
this.subscription = this.messageService.get().subscribe(message => {
if (message.key === 'what message you want') {
this.dosth()
}
});
}
当你想从一个服务发送的对象到另一个服务,请致电发送了消息业务和所需的服务订阅。
我面临着类似的问题,当我不得不执行相同的场景。
给它的解决方案是,在onInit()
方法内的接收组件不应该接收数据。更确切地说,它接收通过一个onChanges()
方法或通过事件(如按钮点击)。它会回报你的对象,在它的值。