首页 > 解决方案 > 在 Angular Typescript 中,如何从 Map() 创建 Observable

问题描述

我有一个联系人服务,负责管理联系人,在地址簿中,方式类型。例如我的界面是这样的:

export interface AddressBook {
  a?: Contact[];
  //...
}

Contact[]只是名字,年龄,电子邮件之类的东西。在我的服务中,我目前有这个实现:

  private addressBook: Map<string, Contact[]> = new Map<string, Contact[]>();
  private readonly ab$: BehaviorSubject<string | Contact[]> = new BehaviorSubject<string | Contact[]>(this.addressBook);

  public constructor(){}

  public getContacts(): Observable<string | Contact[]> {
    return this.ab$.asObservable();
  }

但是我遇到的问题是private readonly ab$: BehaviorSubject<string | Contact[]> = new BehaviorSubject<string | Contact[]>(this.addressBook) 它说的地方:

不可分配给“字符串”类型的参数 | 接触[]'。“Map”类型缺少“Contact[]”类型的以下属性:length、pop、push、concat 和 21 more.ts(2345)

我看不到这个错误来自哪里。谢谢你们的帮助!

标签: angulartypescript

解决方案


BehaviourSubject应该按如下方式实例化:

private readonly ab$: BehaviorSubject<Map<string, Contact[]>> = new BehaviorSubject(new Map({}));

因为它必须与addressBook.


推荐阅读