当前位置: 首页 > 知识库问答 >
问题:

角度模板:如何绑定RXJS Observable并读取其属性?

艾灿
2023-03-14

我创建了这个界面:

interface IGame {
    name: string;
    description: string;
}

我将其用作可观察对象,并将其作为输入传递到组件

@Input() public game: Observable<IGame>;

我可以看到使用JSON管道打印的值:

 <h3>{{game | json}}</h3>

绑定到特定属性时,不显示任何内容(仅显示空字符串):

 <h3>{{game.name}}</h3>
 <h3>{{game.description}}</h3>

共有3个答案

叶坚
2023-03-14

NgRx 10提供了带有*ngrxLet指令@NgRx/component包,这是一种在模板中绑定观测值的方便方法。

用法示例:

<ng-container *ngrxLet="observableNumber$ as n">
    <app-number [number]="n">
    </app-number>
</ng-container>

您甚至可以跟踪所有可观察到的通知:

<ng-container *ngrxLet="observableNumber$; let n; let e = $error, let c = $complete">
    ....
</ng-container>

从NgRx文件:

当前将可观察对象绑定到视图的方式如下:*ngIf=“observeNumber$| async as n”。问题是*ngIf也会干扰渲染,如果出现错误值,组件将被隐藏。*ngrxLet指令接管了多项功能,同时使在模板中处理流更加方便和安全。

关于ngrxLet的解释性教程可以在这里找到。

申屠乐池
2023-03-14

使用*ngIf作为语法将async管道分解为单个调用(和单个订阅)。

  <ng-container *ngIf="( game$ | async ) as game">
    <h3>{{ game.name }}</h3>
    <h3>{{ game.description }}</h3>
  </ng-container>

这只创建了一个对可观察对象的订阅,它消除了对?。的需要,并使使用模板更加干净。

注意:我将原来的示例从game重命名为game$

姬乐
2023-03-14

async管道在视图绑定中执行订阅

 <h3>{{(game | async)?.name}}</h3>

只有在可能发出null值时才需要

 类似资料:
  • 英文原文:http://emberjs.com/guides/templates/binding-element-attributes/ 除了普通文本,你可能也希望在模板中包含可以将其属性绑定到控制器的HTML元素。 例如,想象一下你的控制器中包含这样一个属性,它包含指向一幅图像的URL地址: 1 2 3 <div id="logo"> <img {{bind-attr src=logoUr

  • 尝试使用< code>getAuth请求来存储令牌。请求不调用API并抛出错误。 TypeError:无法在HttpHeaders.push处读取undefined的属性(读取“length”)../node _ modules/@ angular/common/Fe sm5/http . js . http headers . apply update(http . js:199)at http

  • 是否可以通过context将对象(比方说User(包含3个字符串属性-name、password、detail)传递给thymeleaf模板,并从模板中访问它的属性,例如 ? 如果是这样,我该怎么做? 匿名用户 如果你正在使用spring和thymeleaf,那么它们应该像魅力一样为你工作。在这种情况下,它非常简单: 其中myTemplate引用,其内容如下所示: 和我的实体 和我使用的沉香酒的版

  • 我想解决的一般问题是,一个复选框只有一个datatemplate,然后我可以将它用于listview中的许多不同列(使用gridview)。在我所见过的所有示例中,每个绑定都创建了一个分离模板,这对我来说似乎有些过头了。 我一直试图通过创建gridviewcolumn将设置的附加属性来实现这一点。然后,我可以简单地为绑定到附加属性的复选框设置一个datatemplate。 我遇到的问题实际上是将复

  • 我正在使用剑道用户界面和角度网格应用程序。我的网格由JSON数据(单独的文件)填充,我正在使用angular service: 我的JSON数据: 我的Angular服务: 这是我的控制器: 这是我的JSON,其中包含documentType的数据: 这是我的HTML: 在超文本标记语言中,我有一个包含文档类型数据的dropdown列表,我的dropdown列表中填充了JSON数据。但是,问题在于

  • 我试图使用函数在单击元素中包含的链接时切换这些元素的类,但它不断给我提供以下错误:中[IsRouteActive(['./home'])中未定义的属性“Is RouteActive”。该文件如下所示: 我试过很多种路径,比如'/home'、'#/home'、'/home'、'./home'、'home'但都不起作用。这个错误可能与什么有关?以及如何实际调试此类情况?