angular - Angular 10 RxJs 比较可观察与不可观察
问题描述
如何比较用户 inputKind 选择的 type Kind
。有了randomKind$
这个类型:Observable<Kind>
?
html:
<div class="container-fluid">
<div class="row justify-content-center">
<ng-container *ngIf="((kindViewModel$ | async)?.kinds) as kinds">
<div>
<div>
<h1>{{(randomKind$ | async).originalText}}</h1>
</div>
<div *ngFor="let kind of kinds">
<h3>
<button mat-button (click)="kindSelected(kind)">{{kind.translatedText}}</button>
</h3>
</div>
</div>
</ng-container>
</div>
</div>
打字稿:
public randomKind$: Observable<Kind> = this.kindsService.kindViewModel$
.pipe(map(t => t.kinds[this.randomInt(0, 7)]));
public kindSelected(inputKind: Kind) {
//how to compare inputKind with randomKind?
}
export interface Kind {
originalQuestions: string;
originalText: string;
translatedQuestions: string;
translatedText: string;
}
解决方案
订阅randomKind$
并聆听价值观。将最新值存储在另一个属性中。让我们命名theVal
this.randomKind$.subscribe((x) => { this.theVal = x });
与新的theVal
.
另一种可能是BehaviorSubject。由于它有一个getValue
方法,您可以随时读取最新值。
推荐阅读
- sql - 如何按多行排序,每一行都降序而不为空?
- android - 信标扫描仪不扫描一个信标信号超过 10 秒
- python - AWS Lambda:无法导入模块“包/文件”:没有名为“util”的模块
- json - 如何使用 python 将 JSON 数据转换为 .tsv 文件。
- jquery - 通过使用 jQuery.ajax() 发出请求,从 URL 中检索 Json 数组
- python - 来自 CME 的 Webscrape 表格,包括从下拉菜单中选择所需的表格
- java - ObjectMapper 不接受来自 HttpURLConnection 的 JSON 响应
- java - Java BorderLayout.add 每次都不起作用
- jquery - 我该怎么办: var value = foo(bar); 其中 foo 是一个通过 JSON 请求查找值的函数
- linux - 映射 MMIO 区域回写不起作用