javascript - Angular 2 : Toggle Boolean based on a condition

标签 javascript html angularjs angular boolean

我有一个搜索栏,我想在输入值长度为 2 或更长时显示所有过滤后的名称。

我设法从输入字段中获取了 value.length。现在我卡住了。 起初我做了:

if (value.length >= 2){
  showNames: true;
} 

默认 showNames 为 false。当长度为 2 或更高时,它设置为 true。所以,这是有效的。只有当用户删除文本时,value.length 再次低于 2, boolean 值才不会再次变为 false。我试过 if else,但我知道这在 Angular 2 中是不正确的。

<ion-searchbar (ionInput)="getNames($event)"></ion-searchbar>
<ion-list *ngIf="showNames">
   <ion-item *ngFor="let name of names">
     {{ name }}
   </ion-item>
</ion-list>

我知道我可以通过单击按钮来切换 boolean 值,但我只想通过值的长度来切换它。

*ngIf="value.length >= 2" 也不起作用,因为我在 Typescript 中创建了变量“value”。所以在我的 HTML 中它没有定义。而且我不想使用大公式来计算长度,这就是我创建变量的原因。

我该怎么办

  1. 将变量“value”从我​​的 Typescript 传递到我的 HTML,这样我就可以使用 *ngIf="value.length > 2"?
  2. 或者在我的 Typescript 中做某种 If/Else,这样我就可以在我的 HTML 中使用像 *ngIf="showNames" 这样的单个 boolean 值?

最佳答案

您可以像这样绑定(bind)到搜索栏的模型:

<ion-searchbar [(ngModel)]="searchValue" (ionInput)="getNames($event)"></ion-searchbar>
<ion-list *ngIf="searchValue.length >= 2">
   <ion-item *ngFor="let name of names">
     {{ name }}
   </ion-item>
</ion-list>

然后在你的组件中定义这样一个变量:

export class ComponentA {
    searchValue: string = "";

    // ...
}

关于javascript - Angular 2 : Toggle Boolean based on a condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38226334/

相关文章:

javascript - 如何将手动销售计算器脚本转换为自动销售计算器脚本?

javascript - 图像的响应式空白图像叠加

javascript - 如何将变量传递到一个函数到另一个函数并以纯文本形式调用该函数并在 Angular js中以纯文本形式显示值

javascript - 如何进一步抽象具有太多重复逻辑的指令

javascript - 使用 node.js 将重复的 HTML 片段导入到其他 html 文件中

javascript - 用文本替换整数

javascript - 如何判断浏览器是否为HTML5 Canvas提供硬件加速

html - 使用 Delphi 中的 TWebbrowser 组件向网站发送数据和从网站接收数据

html - jQuery 手机 : Get data passed to page via changePage

angularjs - 在angularjs中使用ngMap模块es6类时,使用 'this'时 'places-auto-complete'未绑定(bind)到构造函数