angular - 如何在不触发新发射的情况下获取可观察值的值

标签 angular typescript rxjs

如何在不触发新发射的情况下获得发射的可观察值的值?我想在 ngClass 标记中获取可观察对象的值。

我尝试使用 pipe tap 来获取通过 switchMap 的值,但它没有记录值。然后我可以将 trueIfDefinitionsLength 用于 ngClass 条件。

this.definitions$.pipe(
  tap(value => console.log('timer result =', value))
)

Observable 订阅了 |异步

模板:

<input [ngClass]="{'input-has-results': trueIfDefinitionsLength > 0}"
       [formControl]="searchInput">

<ng-container *ngIf="definitions$ | async as definitions">
  <div class="format-options" *ngIf="definitions.length > 0">
    <div *ngFor="let definition of definitions" class="search-result">
      <div>{{definition.name}}</div>
      <div>{{definition.description}}</div>
    </div>
  </div>
</ng-container>

组件

this.definitions$ = this.searchInput.valueChanges
                        .pipe(
                            tap(value => console.log('input')),
                            //startWith(''),
                            debounceTime(500),
                            //distinctUntilChanged(),
                            switchMap(value => this.definitionService.searchTerm(value))
                        );

最佳答案

改用BehaviorSubject。它有一个方法 getValue() 来获取当前值而不发出新值。

关于angular - 如何在不触发新发射的情况下获取可观察值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673412/

相关文章:

angular - 与 typescript 、节点和 Angular 共享代码

javascript - 带 Angular 动态 iframe 源

javascript - 如何在 Angular 2 中按需延迟加载组件和模块

javascript - 根据其嵌套数组值过滤数组

javascript - Angular2 - 嵌套表单元素

angular - 按钮@Directive通过Angular中的@Input绑定(bind)禁用属性

angular - 如何将文件夹添加到 SystemJS Config 映射?

node.js - 对 node.js 的 Reactive-Extensions/RxJS 实现

javascript - 使用 takeUntil 完成一个 RxJS 流

javascript - Observable.from([true]) 是做什么的?