angular - 调用本地 json 文件时找不到类型为“object”的不同支持对象“[object Object]”
问题描述
导致错误消息的原因:
错误错误:找不到类型为“对象”的不同支持对象“[对象对象]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
我该如何解决?
公司.json
[
{
"name": "one"
},
{
"name": "two"
},
{
"name": "three"
},
{
"name": "four"
},
{
"name": "five"
}
]
虚拟api.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/filter';
@Injectable()
export class DummyApi {
constructor(public http: Http) {}
filterCompanies(searchTerm) {
return this.http.get('assets/data/companies.json').map(res => res.json()).subscribe((data) => {
return data.filter(t=>t.name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1);
});
}
}
搜索.ts
import { Component } from '@angular/core';
import { FormControl } from '@angular/forms';
import { NavController } from 'ionic-angular';
import { DummyApi } from '../../providers/dummy-api/dummy-api';
import 'rxjs/add/operator/debounceTime';
@Component({
selector: 'page-search',
templateUrl: 'search.html',
providers: [DummyApi]
})
export class SearchPage {
searchTerm: string = '';
searchControl: FormControl;
companies: any;
searching: any = false;
constructor(public navCtrl: NavController, public dummyApiService: DummyApi) {
this.searchControl = new FormControl();
}
ionViewDidLoad() {
this.setFilteredCompanies();
}
setFilteredCompanies() {
this.companies = this.dummyApiService.filterCompanies(this.searchTerm);
}
}
搜索.html
<ion-item *ngFor="let company of companies">
{{ company.name }}
</ion-item>
解决方案
使用 ts 文件并导入它:
公司.ts
export const companies = [
{
"name": "one"
},
{
"name": "two"
},
{
"name": "three"
},
{
"name": "four"
},
{
"name": "five"
}
];
搜索.ts
import { Component } from '@angular/core';
import { FormControl } from '@angular/forms';
import { NavController } from 'ionic-angular';
import { DummyApi } from '../../providers/dummy-api/dummy-api';
import 'rxjs/add/operator/debounceTime';
// import it
import { companies } from './companies'
@Component({
selector: 'page-search',
templateUrl: 'search.html',
providers: [DummyApi]
})
export class SearchPage {
searchTerm: string = '';
searchControl: FormControl;
// Set the value
companies = companies;
searching: any = false;
constructor(public navCtrl: NavController, public dummyApiService: DummyApi) {
this.searchControl = new FormControl();
}
ionViewDidLoad() {
this.setFilteredCompanies();
}
setFilteredCompanies() {
this.companies = this.dummyApiService.filterCompanies(this.searchTerm);
}
}
推荐阅读
- python-3.x - 根据值范围更改颜色图中的颜色
- java - @RequestMapping 没有 @ResponseBody 的不同行为
- reactjs - 如何将按钮折叠起来?
- kubernetes - 重复的大使映射是否会导致 Kubernetes 服务失效?
- r - 如何删除R中的匹配字符?
- php - PHP HTTP 500 试图从 api 发出 GET 请求
- mysql - 重新启动 docker 时表和记录丢失
- python-3.x - 在 ubuntu 中避免使用 /run/user 类型的路径
- java - 如何将 2 个独立列表转换为单个列表
- react-native - 在 TabBar 中的按钮中更改屏幕