如果结果包含一部分文字,则尝试隐藏变量

时间:2019-01-30 17:46:53

标签: angular

我有一个角度项目,在我的html中,我想使用[display]标记显示或隐藏一个基于,如果控制器返回一组包含特定单词的文本。

因此示例为

<div [display]="!result.name.contains('jim')">

这不起作用,我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

一个小上下文将是有益的。这是一个单页上的一个DIV?在列表中(ngFor)的元素?结果来自服务吗?一个@input?页面上另一个元素的输出?

[display]如果我记得是/曾经是AngularJS约定,并且在Angular 2及更高版本中已将其替换为* ngIf

<div *ngIf="condition">Content to render when condition is true.</div>

如果这是一个单件,而不是基于元件的迭代阵列(通过* ngFor例如),我建议把控制器中的逻辑和具有它返回一个布尔值,它可以绑定* ngIf条件上到。

例如:

<div *ngIf="!isJimInResult()">Content to render when Jim in in result.</div>


isJimInResult():boolean {
    if(result.name.contains('jim')) {
        return true;
    } else {
        return false
    }
}

如果这是在迭代数组,那么你就必须result.name的行值传递给函数来计算,但是这需要比您所提供的项目的更多细节。

有一个更好的解决办法是定义一个变量,并绑定到,然后设置它,只要结果被更新,但同样 - 需要你是如何得到这些数据,以便知道什么时候实行多一点知识逻辑置位/复位的是布尔值。