0

我是 ionic2 的新手,我需要根据我输入的内容过滤数据,所以我想到了使用 ngModel 和 ngIf。我的 JSON 包含姓名和电子邮件列表,代码如下。请告诉我哪里出错了,或者如果有其他方法请告诉我。

在打字稿中,我已将 namefilter 初始化为特定名称

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {Http , Headers} from '@angular/http';
import 'rxjs/add/operator/map'

@Component({
  selector: 'page-home',
  templateUrl: 'home.html',
})

export class HomePage {
  url:string;
  data:any[];
  namefilter:string='raj';

  constructor(public navCtrl: NavController , public http : Http) {
     this.getdata();
  }

  getdata() {
     this.url="http://example.com/json";
     this.http.get(this.url).map(res => res.json()).subscribe( res =>{
        console.log(res);
        this.data = res;
     }, err => {
        console.log(err);
     });
  }
}

这是 HTML:

<ion-list>
    <ion-item>
      <ion-label>Username</ion-label>
      <ion-input type="text" [(ngModel)] = 'namefilter' ></ion-input>
    </ion-item>
    <p> filtered by name : {{namefilter}} </p>
</ion-list>
  <div  *ngFor = ' let content of data ' >
    <ion-card  (click)="infoPage(content)" *ngIf="content.name === '{{namefilter}}' " >
      <h4>{{content.name}} : {{content.email}} </h4>
    </ion-card>
  </div>
4

2 回答 2

1

正如@raj 已经评论的那样,你*ngIf错了!

它应该如下所示:

<ion-card (click)="infoPage(content)" *ngIf="content.name === namefilter">

*ngIf你必须使用你的变量没有插值。

于 2016-12-22T05:51:27.220 回答
1

只需更新您的 IF 条件。而且我认为没有必要检查类型以及价值。

=== :将检查值和类型

== : 将只检查值

<ion-card  (click)="infoPage(content)" *ngIf="content.name == namefilter" >
于 2016-12-22T05:58:00.653 回答