加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 如何为对象创建行为主题并在另一个组件上订阅它?

发布时间:2020-12-17 17:29:24 所属栏目:安全 来源:网络整理
导读:我在服务类中创建了一个行为主题. public personObject: BehaviorSubjectany = new BehaviorSubjectany({ personId: 1,name: 'john doe' }); 在导入此服务的组件上,我已订阅此行为主题,如下所示: ` this._subscription.add( this._bankService.personObject
我在服务类中创建了一个行为主题.

public personObject: BehaviorSubject<any> = new BehaviorSubject<any>({
                                               personId: 1,name: 'john doe'
                                               });

在导入此服务的组件上,我已订阅此行为主题,如下所示:

`        this._subscription.add(
            this._bankService.personObject.subscribe(data => {
                this.personObject = data;
                console.log(data);
            })
        );`

但我无法在行为主题中获得准确的数据集.请帮忙.

编辑
我忘了提到我已经使用ViewContainerRef来创建我的兄弟组合.所以我添加了一个答案,对我的问题几点评论.

解决方法

服务

@Injectable()
export class DataService {

  private _dataListSource: BehaviorSubject<IData[]> = new BehaviorSubject([]);
  dataList: Observable<IData[]> = this._dataListSource.asObservable().distinctUntilChanged();

  ...

  getDataList(): Observable<any> {
      return this.httpService.get('/data').map(res => {
          this._dataListSource.next(res);
      });
  }

然后你可以在你的组件中使用它

export class DataComponent implements OnInit {

    public dataList$: Observable<IData[]>;

    constructor(public dataService: DataService) {}

    ngOnInit() {
        this.dataList$= this.dataService.dataList;
        this.dataService.getDataList().subscribe();
    }
}

和你的HTML

<div *ngIf="dataList$| async; let dataList; ">
        <div *ngFor="let data of dataList">
            {{ data | json}}
        </div>
    </div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读