Вы должны создать parent-component
, который отображает несколько card-components
.
https://stackblitz.com/edit/angular-zvjblo
родитель-компонент
parent-component
содержит ваш список блоков и отображает несколько card-components
, предоставляя каждому card-component
данные о блоках для этой карты. Также есть кнопка для добавления нового блока в список.
шаблон
<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
получает данные одного блока от родительского компонента и отображает их.
шаблон
<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() {
}
}