2016-07-06 105 views
3

我有一个搜索栏,当输入值长度为2或更长时,我想显示所有过滤的名称。Angular 2:根据条件切换布尔值

我设法让value.length超出输入字段。现在我卡住了。 起初,我做了:

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

默认showNames是假的。当长度等于或大于2时,则设置为真。所以,这是工作。只有当用户擦除文本时,value.length再次低于2,布尔值才会再次变为false。我想,如果别的,但我知道这是不正确的角2

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

我知道我可以从一个点击按钮切换一个布尔值,但我只是想从一个值的长度将其切换。

*ngIf="value.length >= 2"也不起作用,因为我在我的Typescript中创建了变量'value'。所以在我的HTML中没有定义。我不想用大公式来计算长度,这就是为什么我创建了一个变量。

如何,我不是

  1. 从我的打字稿变量“价值”传递给我的HTML,所以我可以用*ngIf="value.length > 2"
  2. 或者在我的手稿中做某种If/Else,所以我可以在我的HTML中使用像*ngIf="showNames"这样的单个布尔值?

回答

5

您可以绑定到搜索栏的模式是这样的:

<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 = ""; 

    // ... 
} 
+0

是的!谢谢。这工作:-) –

0

你可以做showNames的功能,目标是做*ngIf="showNames()",或者如果它是短执行检查右边有:*ngIf="value.length >= 2"