Javascript angular2数据表中的angular2搜索文件服务器查询-属性';名字';不存在于类型';{}';

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 = [];

在我的Angular cli项目中,我使用搜索过滤器为datatable实现了这段代码。我已经使用了下面使用loadsh的链接中给出的教程。

以下是包裹链接:

我想添加搜索过滤器,它在updateData函数中显示了这个错误。 类型“{}”上不存在属性“first_name”。typescript或loadsh版本或其他版本有问题吗

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错误),所以这一切都是关于您的
用户
数组有type
any
,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);