typescript 订阅不可分配给NgIterable

px9o7tmv  于 2023-01-10  发布在  TypeScript
关注(0)|答案(1)|浏览(104)

**目标:**我想在前端显示用户数据

我有一个用户模型IPerson,其结构如下:

export interface IPerson {
  name: string;
  email: string;
  passwort: string;
}

在THE auth服务中,我创建了一个这种类型的observable,一旦我向它添加了一些配置文件信息,它就应该保存这些信息

public loggedInUserData = new ReplaySubject<IPerson>();

在配置文件组件中,我希望获取这个可观察对象的最新有效负载并存储它

public profiles$ = this.authService.loggedInUserData.subscribe((res) => {
  return res;
});

最后,我希望以HTML格式显示接收到的用户数据

<tr *ngFor="let profile of profiles$">
  <td>{{ profile.name }}</td>
  <td>{{ profile.email }}</td>
  <td>{{ profile.passwort }}</td>
</tr>

**问题:**收到以下错误:

类型“Subscription”不能赋给类型“NgIterable|零|未定义'

rsaldnfx

rsaldnfx1#

考虑到您需要scan rxjs运算符来将IPerson对象累积为Observable<IPerson[]>

import { scan } from 'rxjs/operators';

public profiles$: Observable<IPerson[]> = this.authService.loggedInUserData
  .asObservable()
  .pipe(scan((acc, curr) => [...acc, curr], []));

并使用async管道订阅可观察对象。

<tr *ngFor="let profile of profiles$ | async">
  <td>{{ profile.name }}</td>
  <td>{{ profile.email }}</td>
  <td>{{ profile.passwort }}</td>
</tr>

Sample StackBlitz Demo

相关问题