使用Angular2時,我的主頁上有一個條形表格,當您單擊某一行時,它會更改顏色,再次單擊時會返回原始顏色。當你點擊一行時,你可以刪除它。我的問題是,當我刪除不是最後一行的行時,在該行被刪除之後,它已經改變了顏色。Angular2在刪除後將表格行的顏色恢復爲原始狀態
例如,如果我單擊並刪除第2行,刪除第2行後,第3行將突出顯示已更改的顏色。我想要的是在刪除後沒有行突出顯示。請記住,第3行只是通過突出顯示的顏色顯示爲單擊,但在代碼中沒有任何行以編程方式表示爲突出顯示。從我的主網頁
HTML所在的表是(#015939
綠色是我的高亮顏色,偶數行white
默認情況下,奇數行是#d3d3d3
灰色默認情況下),然後用選擇deletebutton
刪除按鈕子組件的標記:
mainpage.component.html
<tr *ngFor="let dPoint of theData; let idx=index; let even=even" (click)="onClick(dPoint, idx)" (row)="received($event)"
[style.backgroundColor]="clickedRow == idx ? '#015939' : (even ? 'white' : '#d3d3d3')" [style.color]="clickedRow == idx ? 'white' : '#015939'">
<td>{{dPoint.tDataPoint}}</td>
<td>{{dPoint.tICCP}}</td>
<td>{{dPoint.tStartDate}}</td>
<td>{{dPoint.tEndDate}}</td>
</tr>
<deletebutton [receivedRow]='toSend'></deletebutton>
HTML的按鈕刪除被點擊的行
從我的主網頁deletebutton.component.html
//this HTML is represented by using deletebutton tag above
<button type="submit" class="btn" data-dismiss="modal" (click)="delete()" class="btn icon-trash tableButton"></button>
打字稿功能,其發射被點擊的行:
@Component({
selector: 'main-page',
styleUrls: ['../app.component.css'],
templateUrl: 'mainpage.component.html'
})
export class MainPageComponent implements OnInit {
clickedRow:number;
toSend:DataTable;
@Output() row: EventEmitter<any> = new EventEmitter<any>();
onClick(message:DataTable, idx:any){
let d = message.tDataPoint;
let i = message.tICCP;
let s = message.tStartDate;
let e = message.tEndDate;
if(this.clickedRow == idx) {
this.clickedRow = -1;
this.toSend = null;
} else {
this.clickedRow = idx;
this.toSend = new DataTable(d, i, s, e);
}
this.row.emit(this.toSend);
}
打字稿功能刪除點擊行(我的主要頁面的子組件):
@Component({
selector: 'deletebutton',
templateUrl: './deletebutton.component.html',
styleUrls: ['../app.component.css']
})
export class DeletebuttonComponent implements OnInit {
@Input() receivedRow:DataTable;
delete(){
var count = 0;
var length = DPS.length;
if (this.receivedRow != null) {
for (let entry in DPS) {
if (DPS[entry].tDataPoint === this.receivedRow.tDataPoint) {
DPS.splice(parseInt(entry), 1);
} else if ((count === (length-1)) && (DPS[entry].tDataPoint !== this.receivedRow.tDataPoint)) {
alert("Please select a row first");
} else if (count !== length) {
count = count + 1;
}
}
}
}
}
我需要的表僅是白色和灰色的行刪除一行之後。請注意,在第3張截圖中,新的第2行(以前是第3行)突出顯示
我試着用@Input
和@Output
以某種方式發送刪除前一行後突出顯示的行改變this.clickedRow
但似乎無法確定邏輯。
請顯示更多模板..這兩個'onClick'函數被觸發.. – mxii
添加了觸發第二個'onClick'方法的'button'來刪除點擊的行。第一個「onClick」方法的HTML已經在第一組HTML中。還包括'deletebutton'的HTML,它將點擊的行作爲輸入 – Drew13
我不明白你如何選擇以及如何刪除一行。如果刪除的行與'clickedRow'相同,則只需將'clickedRow'設置爲'-1'。 –