【发布时间】:2020-10-23 09:49:44
【问题描述】:
我不知道如何解决我的问题。我有一个包含行的表 在其中一个列中应该显示一些图标(从后端服务获取的数据),但我在控制台中收到以下错误:
ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'ngIf:未定义'。当前值:'ngIf: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAk
然后我添加了
setLogoImage(logo: any) {
if (logo) {
this.imgURL = 'data:image/jpeg;base64,' + logo;
}
}
ngAfterViewChecked(): void {
this.cdRef.detectChanges();
}
还有我的模板:
<ng-template let-columns="columns" let-rowData pTemplate="body">
<tr>
<td class="ui-resizable-column">{{ rowData['name'] || '' }}</td>
<td class="ui-resizable-column">{{ rowData['active'] | yesNoBoolean }}</td>
<td class="ui-resizable-column">
//some data
</td>
<td class="ui-resizable-column">{{ setLogoImage(rowData['logo']) }}<img *ngIf="imgURL"
[src]="imgURL" height="50"
width="50" alt="logo"></td>
<td class...
目前图标显示没有任何错误,但顺序错误!一切都向下移动一排!你知道如何解决这个问题吗?
更新
嗯,它不起作用。修改后:
export class FrameworkSearchResultsComponent extends PaginationComponent implements OnInit, AfterViewChecked {
constructor(private cdRef: ChangeDetectorRef) {
super();
}
ngOnInit() {
this.pagination.sort = 'name,ASC';
this.setPage.subscribe(val => {
if (this.table) {
this.table.first = val;
}
});
}
setLogoImage(logo: any) {
setTimeout(() => {
if (logo) {
this.imgURL = 'data:image/jpeg;base64,' + logo;
}
}, 100);
}
ngAfterViewChecked(): void {
this.cdRef.detectChanges();
}
我的图标经常闪烁并且显示错误的图标,例如。第 1 行和第 2 行显示相同的图标(但实际上每行不同)
【问题讨论】:
-
您介意在问题中显示
setLogoImage(logo: any)上方函数的其余部分吗?可能有机会推迟imgURL分配的更改
标签: angular