RxJS - 测试空 Observable 数组

RxJS - Test for empty Observable array

我正在学习 Angular 2 和 RxJS,感觉这可能是最简单的问题了。我正在使用商店将 'users' 保存到。我想从 Typescript 端而不是在 Angular 模板中测试它是否为空。

下面是相关的代码行。

public users: Observable<User[]>;
public store: Store<AppState>;

this.users = this.store.select(state => state.user);

if(!this.users) {
//DO THIS 
}

我已经尝试了 length、== null、== undefined,但找不到如何测试这种看似基本的状态。任何帮助表示赞赏。

请注意,将用户保存和检索到商店工作正常。

假设 Store 按照您的指示工作,它 returns 是一个 Observable。因此,您收到的 (this.users) 实际上不是存储值,而是将输出该值的流。

因此,要测试该值是否为空,您不会测试流本身。相反,您订阅流并观察结果:

public users: User[];

// subscribing will actually trigger the fetch for user data
this.store.select(state => state.user)
          .subscribe(data => this.onUsersEmitted(data));

// executed once user data arrives from the store
public onUsersEmitted(data:User[]){
    this.users = data;
    if(!data || !data.length){ /*empty data arrived*/}
}