无法将数据从共享服务获取到角度为2

时间:2017-06-02 09:03:54

标签: javascript angular typescript sharedservices

在我们的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));
          });
    }

这里有什么问题?

0 个答案:

没有答案