从 Chrome 存储中获取数据以在 Angular 组件中显示它
2021-04-24
366
我想从 chrome 存储中获取一个列表,并将其显示在我的 angular 组件中,目前我正在使用这样的函数
myList: any[];
dataSource: MatTableDataSource<any>;
@ViewChild(MatTable, {static: true}) table: MatTable<any>;
@ViewChild(MatPaginator) paginator: MatPaginator;
constructor(private fb: FormBuilder,
private globalsService: GlobalsService,
private snackbar: MatSnackBar) {
chrome.storage.sync.get(['mylist'], this.getLists);
}
getLists(value: any): any{
this.myList = value.mylist;
this.dataSource = new MatTableDataSource<any>(this.myList);
}
问题是我收到此错误:
TypeError:无法读取未定义的属性“length”
,在该组件的 html 文件中,我使用 myList 的属性长度来使用
mat-paginator
,如下所示:
<mat-paginator #paginator [length]="myList.length" [pageSize]="5" [pageSizeOptions]="[5, 10, 20]"></mat-paginator>
显然,myList 始终返回未定义,但是当我在
getLists
函数中执行
console.log(value.mylist)
时它没有返回未定义,我该如何解决这个问题?
2个回答
我使用
Promises
:
776067989
解决了它。
pinkWojak
2021-04-24
按如下方式定义
dataSource
。
dataSource: MatTableDataSource<any> = new MatTableDataSource([]) ;
按如下方式分配
dataSource
值。
this.dataSource.data = new MatTableDataSource<any>(this.myList);
在模板中使用
?
添加长度属性检查
<mat-paginator #paginator [length]="myList?.length" [pageSize]="5" [pageSizeOptions]="[5, 10, 20]"></mat-paginator>
在此处阅读更多信息 - https://developer.chrome.com/docs/extensions/reference/storage/#usage
Zam Abdul Vahid
2021-04-24