角度8-在角度材质的网格中显示图像

时间:2019-11-13 22:21:05

标签: angular

标题:角度8-在角度材质的网格中显示图像。

我正在尝试在Angular材质的网格中显示通过Web ap从SQL Server检索到的图像。

表中的图像存储为:     varbinary NOT NULL

从表中检索行,但在显示时失败。

我遇到错误:找不到类型为“对象”的其他支持对象“ [对象对象]”。 NgFor仅支持绑定到数组等Iterable。

我是否必须进行某种转换或使图像显示在网格中?

我的SQL Server表定义:

 CREATE TABLE [dbo].[tblImages]
 (  
    [ImageId]        [int] IDENTITY(1,1) NOT NULL,
    [ImageData]      [varbinary](max) NOT NULL
  CONSTRAINT [PK_Image] PRIMARY KEY CLUSTERED   
 (  
  [ImageId] ASC  
 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
 ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  

我的html是:

<!-- A list of images in a 3-column grid. -->
<div>
    <mat-grid-list cols="3" rowHeight="2:1">
        <mat-grid-tile *ngFor='let i of allImages'>
            <img [src]='i' class="tile-image">
        </mat-grid-tile>
    </mat-grid-list>
</div>

我的Angular图片模型是:

 import { Binary } from '../../node_modules/@angular/compiler';

 export class Image {
    ImageData: Binary[];
 }

我的Angular组件是-我只是显示html中使用的数组。其余代码未显示:

allImages: Observable<Image[]>;

1 个答案:

答案 0 :(得分:0)

该错误是由于ngFor循环尝试对可观察对象进行迭代而造成的。异步管道可能有用:

<!-- A list of images in a 3-column grid. -->
<div>
    <mat-grid-list cols="3" rowHeight="2:1">
        <mat-grid-tile *ngFor='let i of allImages | async'>
            <img src='data:image/jpeg;base64,{{ i.ImageData }}' class="tile-image">
        </mat-grid-tile>
    </mat-grid-list>
</div>