在我们的Angular 2项目中。我正在尝试使用shared services进行两个组件之间的通信。
我们有一个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);
内的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));
});
}
这里有什么问题?