Javascript angular2数据表中的angular2搜索文件服务器查询-属性';名字';不存在于类型';{}';
在我的Angular cli项目中,我使用搜索过滤器为datatable实现了这段代码。我已经使用了下面使用loadsh的链接中给出的教程。 以下是包裹链接: 我想添加搜索过滤器,它在updateData函数中显示了这个错误。 类型“{}”上不存在属性“first_name”。typescript或loadsh版本或其他版本有问题吗Javascript angular2数据表中的angular2搜索文件服务器查询-属性';名字';不存在于类型';{}';,javascript,angular,typescript,angular-cli,Javascript,Angular,Typescript,Angular Cli,在我的Angular cli项目中,我使用搜索过滤器为datatable实现了这段代码。我已经使用了下面使用loadsh的链接中给出的教程。 以下是包裹链接: 我想添加搜索过滤器,它在updateData函数中显示了这个错误。 类型“{}”上不存在属性“first_name”。typescript或loadsh版本或其他版本有问题吗 export class UsersComponent implements OnInit { public users: any = [];
export class UsersComponent implements OnInit {
public users: any = [];
public filteredData: any;
public filterQuery = "";
public rowsOnPage = 10;
public sortBy = "first_name";
public sortOrder = "asc";
ngOnInit() {
this.authService.getUsersList(userData).subscribe(data => {
var res = data.response;
this.users = this.users;
this.filteredData = res.data;
});
}
public updateData(query:string) {
if(query) {
this.filteredData = _.filter(this.users, (a)=>a.first_name.indexOf(query)>=0);
} else {
this.filteredData = this.users;
}
}
}
这是我的package.json文件,loadsh版本
"dependencies": {
"angular2-datatable": "^0.6.0",
"lodash": "^4.17.4",
},
"devDependencies": {
"@types/lodash": "^4.14.50",
"typescript": "~2.0.3"
}
我猜这个错误发生在您的IDE中(所以它是typescript错误),所以这一切都是关于您的
用户
数组有typeany
,typescript无法检测类型中的first_name属性,我猜lodash返回为{}
,因为缺少指定类型的数组用户
。最好的做法是始终创建类来表示数据。比如:
export class User {
public first_name: string;
/* And the rest of data which coming from your db */
}
/* in your component */
public users: Array<User> = [];
另外,如果您想使用any类型及其数组,请使用
any[]
或array
猜测即可。尝试使用[/code>一个['first\u name']。谢谢你的建议。我想我必须每天学习新东西:)
this.filteredData = _.filter(this.users, (a)=>(a as any).first_name.indexOf(query)>=0);