我有一个变量'temp',它由一系列事务组成。
在ngOnInit()
中,我订阅了一项服务,该服务将事务发送到MinerViewComponent
。然后,该交易记录将显示在MinerViewComponent
的表中。
“临时”包括所有交易。
当我单击按钮时,函数sendBlockToBC()
被调用。
我期望的是带有事务的数组,但我得到的只是“ []”。 ngOnInit()
中的console.log运行正常。我将所有交易都放在一个数组中。
我试图创建另一个变量,因为我以为this.temp.pop()
是问题所在,但仍然给我一个空数组。
export interface Transaction {
sender: number;
recipient: number;
amount: number;
fee: number;
}
const ELEMENT_DATA: Transaction[] = [
];
@Component({
selector: 'app-miner-view',
templateUrl: './miner-view.component.html',
styleUrls: ['./miner-view.component.css']
})
export class MinerViewComponent implements OnInit {
transaction: Transaction;
displayedColumns: string[] = ['sender', 'recipient', 'amount', 'fee'];
dataSource = new MatTableDataSource<Transaction>(ELEMENT_DATA);
temp: Transaction[] = [];
blockNumber = 0;
previousHash = '00000000000000000000000000000000';
blockHash: string = this.generateBlockHash();
constructor(private _TS: TransactionPoolToMinerService, private ref: ChangeDetectorRef) { }
ngOnInit() {
this._TS.transaction$.subscribe(transaction => {
this.transaction = transaction;
this.temp = this.dataSource.data.slice();
this.temp.push(this.transaction);
this.dataSource.data = this.temp;
//console.log(this.temp);
this.ref.detectChanges();
}
);
this.temp = this.dataSource.data.slice();
this.temp.pop();
this.dataSource.data = this.temp;
this.ref.detectChanges();
}
sendBlockToBC() {
//console.log(this.temp);
let block = new Block(this.blockNumber, this.temp, this.previousHash, this.blockHash);
this.raiseBlockNumber();
this.generateBlockHash();
}
raiseBlockNumber() {
this.blockNumber++;
}
/** This method creates a random string of the alphabet [a-z0-9] to demonstrate a block hash out of 32 digits **/
generateBlockHash() {
}
我认为我找到了问题。我尝试在console.log(this.temp)
中为函数MinerViewComponent
调用sendBlockToBC()
。这给了我正确的阵列。
但是该按钮在另一个组件中被调用
HTML:
<mat-toolbar color="primary">
<span>Blockchain Simulation</span>
<span class="fill-remaining-space"></span>
<button mat-button (click)=triggerServiceMVToBC()>Mine</button>
</mat-toolbar>
TS:
@Component({
providers: [MinerViewComponent],
selector: 'app-toolbar',
templateUrl: './toolbar.component.html',
styleUrls: ['./toolbar.component.css']
})
export class ToolbarComponent implements OnInit {
constructor(private minerViewComponent: MinerViewComponent) { }
ngOnInit() {
}
triggerServiceMVToBC() {
this.minerViewComponent.sendBlockToBC();
}
}
我有一个工具栏,按钮在哪里。工具栏是一个自己的组件。单击按钮时,我为sendBlockToBC()
调用函数MinerViewComponent
。问题可能出在构造函数上,它创建了一个新的MinerViewComponent
。解决该问题的一种优雅方法是什么?