在Angular Typescript中,如何从Map()创建Observable

时间:2019-07-08 07:57:32

标签: angular typescript

我有一个联系服务,负责以通讯录的方式管理联系人。例如,我的界面如下所示:

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)的位置:

  

不可分配给'string |类型的参数联系[]'。     类型“地图”缺少类型“联系人[]”的以下属性:长度,弹出,推入,连拍和其他21个。ts(2345)

我看不到此错误的来源。谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

您的BehaviourSubject应该实例化如下:

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

因为它的类型必须与addressBook相同。