Saya ingin menghapus item dari array yang disimpan di sudut 2, dengan Type Script. Saya menggunakan layanan yang disebut Layanan Data, Kode Layanan Data :
export class DataService {
private data: string[] = [];
addData(msg: string) {
this.data.push(msg);
}
getData() {
return this.data;
}
deleteMsg(msg: string) {
delete [this.data.indexOf(msg)];
}
}
Dan kelas komponen saya:
import {Component} from '@angular/core'
import {LogService} from './log.service'
import {DataService} from './data.service'
@Component({
selector: 'tests',
template:
`
<div class="container">
<h2>Testing Component</h2>
<div class="row">
<input type="text" placeholder="log meassage" #logo>
<button class="btn btn-md btn-primary" (click)="logM(logo.value)">log</button>
<button class="btn btn-md btn-success" (click)="store(logo.value)">store</button>
<button class="btn btn-md btn-danger" (click)="send()">send</button>
<button class="btn btn-md " (click)="show()">Show Storage</button>
<button (click)="logarray()">log array</button>
</div>
<div class="col-xs-12">
<ul class="list-group">
<li *ngFor="let item of items" class="list-group-item" #ival>
{{item}}
<button class="pull-right btn btn-sm btn-warning" (click)="deleteItem(ival.value)">Delete
</button>
</li>
</ul>
</div>
<h3>{{value}}</h3>
<br>
</div>
`
})
export class TestsComponent {
items: string[] = [];
constructor(
private logService: LogService,
private dataService: DataService) {
}
logM(message: string) {
this.logService.WriteToLog(message);
}
store(message: string) {
this.dataService.addData(message);
}
send(message: string) {
}
show() {
this.items = this.dataService.getData();
}
deleteItem(message: string) {
this.dataService.deleteMsg(message);
}
logarray() {
this.logService.WriteToLog(this.items.toString());
}
}
Sekarang, semuanya berfungsi dengan baik kecuali ketika saya mencoba menghapus item. Log menunjukkan kepada saya bahwa item tersebut masih dalam larik, dan oleh karena itu masih ditampilkan di halaman. Bagaimana cara menghapus item setelah memilihnya dengan tombol hapus ??
javascript
angular
typescript
aghed aljlad
sumber
sumber
indexOf()
untuk-1
, ini akan menghapus item terakhir dari array yang ketikamsg
tidak ditemukan!Saya pikir cara Angular 2 untuk melakukan ini adalah metode filter:
dimana data_item adalah item yang harus dihapus
sumber
splice()
menghapus semuanya kecuali nilai yang ingin saya hapus dari arrayJangan gunakan
delete
untuk menghapus item dari larik dan gunakansplice()
sebagai gantinya.Lihat pertanyaan serupa: Bagaimana cara menghapus elemen tertentu dari array di JavaScript?
Perhatikan, TypeScript adalah superset dari ES6 (arraynya sama di TypeScript dan JavaScript) jadi silakan mencari solusi JavaScript bahkan saat bekerja dengan TypeScript.
sumber
indexOf()
untuk-1
, ini akan menghapus item terakhir dari array yang ketikamsg
tidak ditemukan!Ini dapat dicapai sebagai berikut:
this.itemArr = this.itemArr.filter( h => h.id !== ID);
sumber
dan
sumber
Anda bisa menggunakan seperti ini:
sumber
Terkadang, sambungan tidak cukup terutama jika larik Anda terlibat dalam logika FILTER. Jadi, pertama-tama Anda dapat memeriksa apakah elemen Anda ada untuk memastikan untuk menghapus elemen yang tepat:
sumber
find
, lalu afindIndex
, itu adalah dua pencarian saat Anda dapat melakukan satu (seperti jawaban yang diterima).Gunakan
splice()
untuk menghapus item dari larik, perbarui indeks larik menjadi konsekuensinya.delete
akan menghapus item dari array tetapi tidak menyegarkan indeks array yang berarti jika Anda ingin menghapus item ketiga dari empat item array indeks elemen akan menjadi setelah menghapus elemen 0,1,4sumber
Anda dapat menghapus data dari array
sumber
sumber
Itu berhasil untuk saya
sumber