*ngIf 指令与订阅功能

尼古拉斯·乔治斯·曼佐斯

我经常遇到使用*ngIf. 通常,返回 boolean 的函数内部有一个 subscribe 。由于多次检查该指令,因此最终会发出多个请求并且页面崩溃。我真的不知道如何解决它。下面是一个例子:

我的Service.service.ts:

myFunction(argument: any): Observable<boolean> {
   // body that returns the observable using HttpClient

}

MyComponent.component.ts:

constructor(private myService: MyService){}

verifySomething(value: number): boolean {

  this.myService.function(value).subscribe((aux) => v); // this is supposed to return what is inside of subscribe to the "upper-function" (verifySomething)
}

MyComponent.component.html:

<tag *ngIf="verifySomething(entity.id)">irrelevant</tag>

我的第一个选择是使用“标志”变量来做一个变通方法,该变量检查输入发生了多少次……但我认为这不是最好的方法。

编辑:更多细节

MyComponent.component.html:

<div *ngIf="values$ | async as values"> 
   <tbody>
      <tr *ngFor="let value of values.content">
        <td *ngIf="verifySomething(value.id)"> {{ value.property1 }}
        <td *ngIf="verifySomething(value.id)"> {{ value.property2 }}
     </tr>
   </tbody>
</div>

内夫扎托普库

你可以用async管道解决你的问题多亏了它,我们可以async在模板中使用变量。

首先,verifySomething函数必须返回 observable。

verifySomething(value: number): Observable<boolean> {

  return this.myService.function(value);
}

然后,我们需要更新模板文件。它必须使用async带有*ngIf指令的管道

<tag *ngIf="verifySomething(entity.id) | async">irrelevant</tag>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

* ngIf的订阅值未更新

在指令中动态添加* ngIf

* ngIf指令的替代名称

ngIf指令中的Observable <string []>

ngIf指令中的异步管道

* ngIf指令中的隐藏属性

* ngIf指令放在哪里?

订阅* ngIf后面的DOM事件

单击带有ngIf的外部指令?

使用Angular ngIf指令的CSS动画延迟

jquery:访问角度 *ngIf 指令中的元素

Angular 2 ngIf执行功能或单击时

一旦ngIf完成呈现html元素,如何在ngIf中触发指令?

订阅显示 [Object Object],不能在 *ngFor 之外创建 *ngIf

* ngIf指令中带有else块的分号-Angular

从具有ngIf指令的输入获取值时出错

Angular *ngIf 语法使用指令而不是字符串参数

如何使用Angular ngIf指令显示或隐藏元素?

从输入控件导航时如何触发* ngIf指令进行验证

没有Angular的NativeScript中是否有类似“ ngIf”指令的指令?

带有“ * ngIf”的组件构造函数中的BehaviourSubject订阅将引发“ ExpressionChangedAfterItHasBeenCheckedError”

将两个异步订阅放在一个Angular * ngIf语句中

Angular 2-* Observable订阅中的变量更新时,* ngif不刷新

嵌套在ngIf中时,异步管道订阅无法正常工作

AngularJS:以编程方式将ngIf添加到指令的最佳实践是什么?

如何在我的项目中使用Chrome调试Angular * ngIf结构指令?

如何在ng-template和ngIf中使用自定义指令?

如何通过* ngIf指令设置嵌套项目的属性值以使其可见

Angular 5 *ngIf 指令对构造函数中的布尔变量表现得很奇怪