我正在使用Angular Material表组件,如下所示:
this.userService.getUsers().subscribe((response) => {
this.users = new MatTableDataSource(response);
});
它可以工作,但是在编译时会引发以下打字错误:
类型“ Object”的参数不能分配给类型“ {} []”的参数。“对象”类型可分配给很少的其他类型。您的意思是改为使用“ any”类型吗?类型“对象”中缺少属性“包含”。
所以我尝试将其更改为:
this.users = new MatTableDataSource<any>(response);
但是还是一样的错误。response
看起来像这样:
[{
userId: 123,
username: 'Tom'
}, {
userId: 456,
username: 'Joe'
}]
任何想法如何摆脱错误?
编辑
应该提到我是否这样做:
this.users = new MatTableDataSource([response]);
错误消失了,但是表格却无法正常工作,因为格式不是表格所期望的正确格式。只是注意这一点,以防它弄清楚可能是什么原因...
类型“ Object”的参数不能分配给类型“ {} []”的参数。
这并不意味着MatTableDataSource
接受错误的参数,而是您response
的类型有误。您应该明确地进行类型转换:
(response: {userId: number, username: string }[]) =>
或通过时执行以下操作:
new MatTableDataSource(response as {userId: number, username: string }[])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句