在我们的 Angular 2 项目中。我正在尝试使用共享服务在两个组件之间进行通信。
我们有一个BotData.SharedService.ts
这样的文件:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
export interface Data {
name: string,
}
@Injectable()
export class BotDataService {
sharingData: Observable<Data[]>
private _sharingData: BehaviorSubject<Data[]>;
private dataStore: {
sharingData: Data[]
};
constructor() {
this.dataStore = { sharingData: [] };
this._sharingData = <BehaviorSubject<Data[]>>new BehaviorSubject([]);
}
saveData(userData) {
console.log(userData)
this._sharingData.next(userData);
}
getData() {
console.log('get data function called' + JSON.stringify( this.sharingData ) );
return this._sharingData.asObservable();
}
}
在这里,我们使用this._sharingData.next(userData);
inside传递数据saveData(userData)
。因此,相同的数据应在内部可用getData()
。但是,当我们这样做时,会console.log('get data function called' + JSON.stringify( this.sharingData )
给出undefined
.
因此,botdataservice.getData()
正在打破内部组件:
constructor(private botdataservice: BotDataService) {
this.botdataservice = botdataservice;
this.botdataservice.getData().subscribe(_sharingData => {
// this.userKonte = _sharingData;
console.log(JSON.stringify(_sharingData));
});
}
这里的解决方法是什么?