angular - Hur skapar man ett beteendesubjekt för ett objekt och prenumererar på det i en annan komponent?
Jag skapade ett beteendesubjekt i en tjänsteklass.
public personObject: BehaviorSubject<any> =
new BehaviorSubject<any>({ personId: 1, name: 'john doe' });
På en komponent som importerar denna tjänst, prenumererade jag på detta beteendesubjekt på detta sätt:
this._subscription.add(
this._bankService.personObject.subscribe(data => {
this.personObject = data;
console.log(data);
})
);
Men jag kan inte få exakt dataset i beteendefacket.
Redigera Jag glömde nämna att jag använde ViewContainerRef för att skapa min syskonkomponent som jag lade till i ett svar med några kommentarer.
Svar #1
Service
@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);
});
}
}
TS-fil
export class DataComponent implements OnInit {
public dataList$: Observable<IData[]>;
constructor(public dataService: DataService) {}
ngOnInit() {
this.dataList$ = this.dataService.dataList;
this.dataService.getDataList().subscribe();
}
}
HTML-fil
<div *ngIf="dataList$ | async; let dataList; ">
<div *ngFor="let data of dataList">
{{ data | json}}
</div>
</div>
