我试图理解如何在Angular 2中使用可观察到的东西。我有这样的服务:
import {Injectable, EventEmitter, ViewChild} from '@angular/core';
import {Observable} from "rxjs/Observable";
import {Subject} from "rxjs/Subject";
import {BehaviorSubject} from "rxjs/Rx";
import {Availabilities} from './availabilities-interface'
@Injectable()
export class AppointmentChoiceStore {
public _appointmentChoices: BehaviorSubject<Availabilities> = new BehaviorSubject<Availabilities>({"availabilities": [''], "length": 0})
constructor() {}
getAppointments() {
return this.asObservable(this._appointmentChoices)
}
asObservable(subject: Subject<any>) {
return new Observable(fn => subject.subscribe(fn));
}
}
这个行为主体从另一个服务中被推送了新的价值观:
that._appointmentChoiceStore._appointmentChoices.next(parseObject)
import {Component, OnInit, AfterViewInit} from '@angular/core'
import {AppointmentChoiceStore} from '../shared/appointment-choice-service'
import {Observable} from 'rxjs/Observable'
import {Subject} from 'rxjs/Subject'
import {BehaviorSubject} from "rxjs/Rx";
import {Availabilities} from '../shared/availabilities-interface'
declare const moment: any
@Component({
selector: 'my-appointment-choice',
template: require('./appointmentchoice-template.html'),
styles: [require('./appointmentchoice-style.css')],
pipes: [CustomPipe]
})
export class AppointmentChoiceComponent implements OnInit, AfterViewInit {
private _nextFourAppointments: Observable<string[]>
constructor(private _appointmentChoiceStore: AppointmentChoiceStore) {
this._appointmentChoiceStore.getAppointments().subscribe(function(value) {
this._nextFourAppointments = value
})
}
}
<li *ngFor="#appointment of _nextFourAppointments.availabilities | async">
<div class="text-left appointment-flex">{{appointment | date: 'EEE' | uppercase}}
export interface Availabilities {
"availabilities": string[],
"length": number
}
如何使用异步管道和*NGFOR从可观察对象异步显示数组?我得到的错误消息是:
browser_adapter.js:77 ORIGINAL EXCEPTION: TypeError: Cannot read property 'availabilties' of undefined
这里有一个例子
// in the service
getVehicles(){
return Observable.interval(2200).map(i=> [{name: 'car 1'},{name: 'car 2'}])
}
// in the controller
vehicles: Observable<Array<any>>
ngOnInit() {
this.vehicles = this._vehicleService.getVehicles();
}
// in template
<div *ngFor='let vehicle of vehicles | async'>
{{vehicle.name}}
</div>
我正在努力处理一个简单的RxJs查询,但我似乎无法理解。如果观察对象被包装在一个对象中,我似乎不知道如何合并它们。如果我直接从flatMap返回Observable,那么这个示例可以正常工作,但我还需要在输出中输入名称。我怎样才能做到这一点? 我正在使用RxJS 5.0.0-beta.2 基本数据结构: RxJs函数: 预期结果: 实际结果:
Observables 是多个值的惰性推送集合。它填补了下面表格中的空白: 单个值 多个值 拉取 Function Iterator 推送 Promise Observable 示例 - 当订阅下面代码中的 Observable 的时候会立即(同步地)推送值1、2、3,然后1秒后会推送值4,再然后是完成流: var observable = Rx.Observable.create(functio
问题是: 使用及其其他功能不是更好吗?
我有以下函数从Angular 9服务返回数据: } } 服务按预期返回数据。我这样称呼它: 在我的html中,我尝试使用如下数据: 我得到这个错误:TS2322:类型'可观察'是不能分配给类型'任何[]|迭代|(迭代 这在几年前是可行的。显然,9改变了一些东西。。。
我是反应式编程的新手,对组合有依赖关系的可观察对象感到困惑。场景如下:有两个可观察对象A,B。可观察A取决于B发出的值。(因此A需要观察B)。有没有办法创建一个由A和B组成并发出V的可观察C?我只是在RxJava留档中寻找指针。