我有一個ng-table
,它是我的主頁的子組件。當單擊一行時,它使用EventEmitter
通過onCellClick
發送該行中的信息。我試圖將這些信息發送給另一個子組件。這恰好是一個按鈕,它是Bootstrap 4模式的子模塊,當點擊主頁面上的按鈕時彈出。只是在接收和處理這些信息時遇到麻煩。 在Angular 2子組件之間使用@input和@output
HTML子組件表:
<ng-table [config]="config"
(tableChanged)="onChangeTable(config)"
(cellClicked)="onCellClick($event)"
[rows]="rows" [columns]="columns">
</ng-table>
HTML的子組件(這出現在主網頁的HTML):
<app-datatable (row)="received($event)"></app-datatable>
打字稿用於獲取和發送行的數據( this.row
是EvenEmitter。data.row
是點擊的實際行):
@Output() row: EventEmitter<any> = new EventEmitter<any>();
public onCellClick(data: any): any {
let d = data.row.tDataPoint;
let i = data.row.tICCP;
let s = data.row.tStartDate;
let e = data.row.tEndDate;
let toSend:DataTable = new DataTable(d, i, s, e);
this.row.emit(toSend);
}
HTML對於按鈕是自舉4模態的子組件:
<button type="submit" class="btn" data-dismiss="modal" (click)="onClick($event)">Delete</button>
打字稿爲按鈕子組件:
selector: 'deletebutton'
@Input() receivedRow:DataTable;
onClick(message:DataTable){
this.sender.emit('This is from On Click Deletebutton');
console.log("On Click Deletebutton");
console.log(this.receivedRow);
for (let entry in DPS){
if (DPS[entry].tDataPoint===message.tDataPoint){
DPS.splice(parseInt(entry),1);
}
}
}
按鈕子組件的HTML(這出現在模態的HTML)。這實際上應該是從點擊行接收數據作爲輸入。
<deletebutton [receivedRow]='row'></deletebutton>
現在我onClick
方法是說receivedRow
是不確定的。我覺得缺少的是[receivedRow]='row'
之間的協調,其中我有我的deletebutton
HTML和onClick
函數調用在該子組件的HTML。總體而言,我只想單擊一行,單擊按鈕打開刪除Boostrap Modal,並刪除正確的行,然後單擊模式內的Delete
按鈕。讓我知道是否有什麼不清楚或需要更多代碼。
實際上有一種方法可以像這樣使用@Input和@Output在子組件之間進行通信嗎?
你的架構對我來說還不清楚。也許張貼圖或提供更多細節。 – Maxime
添加了主頁和Bootstrap模式的截圖。 'ng-table' HTML是子組件HTML中的內容。然後我使用'app-datatable'標籤將該組件放在主頁面上,因爲'app-datatable'是該組件的選擇器。第一組Typescript是我通過EventEmitter發送行信息的方式。 'button' HTML是Bootstrap Modal中'Delete'按鈕的HTML。這就是我想要發送該行的數據。之後的Typescript試圖根據'@ Input'操縱行的數據。 – Drew13
然後,最終的'deletebutton' HTML是我用來實際呈現Bootstrap模式中的'Delete'按鈕的HTML。讓我來清除一些東西,或者你需要更多的信息 – Drew13