如何将图像添加到角网格单元

时间:2019-03-25 11:52:19

标签: angular

我想将完整图像添加到其中一个网格。如何将图像添加到网格单元。以下是component.ts文件:

export interface Tile {
  color: string;
  cols: number;
  rows: number;
  text: string;
  fontSize: string;
  fontFamily: string;
}
@Component({
  selector: 'grid-list-dynamic-example',
  templateUrl: 'grid-list-dynamic-example.html',
  styleUrls: ['grid-list-dynamic-example.css'],
})
export class GridListDynamicExample {
  tiles: Tile[] = [

    { text: 'One', cols: 5, rows: 1, color: 'lightblue', fontSize: '20', 
fontFamily: 'Rubik'},
    { text: 'Two', cols: 3, rows: 1, color: 'lightgreen', fontSize: '20', 
fontFamily: 'Roboto Condensed'},
    { text: 'Three', cols: 2, rows: 2, color: 'lightpink', fontSize: 
'25', fontFamily:  'Rubik'  },
    { text: 'Four', cols: 3, rows: 1, color: '#DDBDF1', fontSize: '30' , 
fontFamily: 'Roboto Condensed' },
{ text: 'Five', cols: 3, rows: 1, color: 'lightblue', fontSize: '35', 
fontFamily:  'Roboto Condensed'},
    { text: 'Six', cols: 2, rows: 1, color: 'lightyellow', fontSize: 
'40',fontFamily: 'Rubik' },
  ];
}

这是html文件:

<mat-grid-list cols="5" rowHeight="20vh" [gutterSize]="'0px'">
  <mat-grid-tile
      *ngFor="let tile of tiles; let i = index"
      [colspan]="tile.cols"
      [rowspan]="tile.rows"
      [style.background]="tile.color"
      [ngStyle]="{'font-size': 'calc(' + tile.fontSize + 'px + 0.5vw)', 
'font-family': tile.fontFamily +', sans-serif;'}"
      [ngClass]="'tile' + i"
   >
    {{tile.text}}
  </mat-grid-tile>
</mat-grid-list>

这里是stackblitz

我能够将ts文件中的图像添加为颜色,但是该图像只是在网格单元中扩展的图像的一小部分。

1 个答案:

答案 0 :(得分:1)

检查已编辑的StackBlitz示例代码。

https://stackblitz.com/edit/angular-sse4n5-qbqb1e

我这样更改了您的界面

export interface Tile {
  color: string;
  cols: number;
  rows: number;
  text: string;
  fontSize: string;
  fontFamily: string;
  paddingTop: string;
  marginLeft: string;
  marginRight: string;
  hasImage?: boolean;
  imageUrl?: string;
}

在您的html内部标记中:

 <ng-container *ngIf="tile.hasImage; else textContainer">
   <img [src]="tile.imageUrl"/>
 </ng-container>

 <ng-template #textContainer>
    {{tile.text}}
  </ng-template>

如果要将图像显示到任何图块,只需添加两个属性

{... imageUrl: "https://assets.pernod-ricard.com/nz/media_images/test.jpg?hUV74FvXQrWUBk1P2.fBvzoBUmjZ1wct" ,hasImage: true, ...}