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); }) );` 但我无法在行为主题中获得准确的数据集.请帮忙. 编辑 解决方法
服务
@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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |