行为主体的访问值

Rob*_*t28 2 observable rxjs typescript angular

我意识到 StackOverflow 上有几个与此相关的问题,我仍在努力解决这些问题。

我正在尝试访问行为主体的价值观,但显然还没有足够的理解来实现这一点。我已经阅读了 rxjs 文档和各种其他来源。我尝试过创建一个新的 BehaviourSubject、使用 next、订阅它等。还尝试使用管道和映射来映射它。

this.theService.items$
Run Code Online (Sandbox Code Playgroud)

是一个可观察-行为主题,它有一个私有字段 _values,我试图访问但无法访问。然后将其投影到一个变量,以便我可以访问字段值并在我的组件中使用。

items$ 是一个获取可观察对象的 getter

private _items$ = new BehaviorSubject<T[]>([]);
get items$() {
    return this._items$.asObservable();
  }
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西,老实说,我没有根据其 id 找到项目

public model: IModel; 

this.theService.items$.pipe(
  map(items => <IModel>items.find(item => item.ID === this.id))).subscribe(item => {
    this.model = item
});

Run Code Online (Sandbox Code Playgroud)

任何指示将不胜感激。

Eli*_*ush 6

如果你想直接获取值BehaviorSubject- 你需要调用BehaviorSubject.value.

这样您就可以公开服务中的方法:

private _items$ = new BehaviorSubject<T[]>([]);
get items$() {
  return this._items$.asObservable();
}
get items() {
   return this._items$.value;
}
Run Code Online (Sandbox Code Playgroud)