您应该创建一个显示多个card-components 的parent-component。
https://stackblitz.com/edit/angular-zvjblo
父组件
parent-component 保存您的块列表,并通过为每个 card-component 提供该卡的块数据来显示多个 card-components。还有一个按钮可以将新块添加到列表中。
模板
<button (click)="addCard()">Add Card</button>
<app-block-card *ngFor="let block of blocks" [blockData]="block"></app-block-card>
代码
import { Component, OnInit } from '@angular/core';
import { BlockData } from './block-data';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
blocks: BlockData[];
ngOnInit() {
this.blocks = [];
}
addCard() {
this.blocks.push({
blockHash: '9348534985720587',
blockNumber: 3,
previousBlock: "0000",
transactions: [
{
sender: 'sender',
recipient: 'recipient',
amount: 1,
fee: 200
}
]
});
}
}
卡片组件
card-component从父组件接收一个block的数据并显示出来。
模板
<mat-card class="card">
<p>{{blockData.blockHash}}</p>
<p>{{blockData.blockNumber}}</p>
<p>{{blockData.previousBlock}}</p>
<p>{{blockData.transactions | json}}</p>
</mat-card>
代码
import { Component, OnInit, Input } from '@angular/core';
import { BlockData } from '../block-data';
@Component({
selector: 'app-block-card',
templateUrl: './block-card.component.html',
styleUrls: ['./block-card.component.css']
})
export class BlockCardComponent implements OnInit {
@Input() blockData: BlockData;
constructor() { }
ngOnInit() {
}
}