Saya memiliki Komponen dan Layanan:
Komponen:
export class WebUserProfileViewComponent {
persons: Person [];
personId: number;
constructor( params: RouteParams, private personService: PersonService) {
this.personId = params.get('id');
this.persons = this. personService.getPersons();
console.log(this.personId);
}
}
Layanan:
@Injectable()
export class PersonService {
getPersons(){
var persons: Person[] = [
{id: 1, firstName:'Hans', lastName:'Mustermann', email: '[email protected]', company:'Test', country:'DE'},
{id: 2, firstName:'Muster', lastName:'Mustermann', email: '[email protected]', company:'test', country:'DE'},
{id:3, firstName:'Thomas', lastName:'Mustermann', email: '[email protected]', company:'test', country:'DE'}
];
return persons;
}
}
Saya ingin mendapatkan Item Orang dengan Id ('personID'). PersonID yang saya dapatkan dari Routeparam. Untuk itu saya membutuhkan foreach loop? Tetapi saya belum menemukan solusi untuk ini.
angular
typescript
angular2-services
perangkap
sumber
sumber
Jawaban:
Anda perlu menggunakan metode
Array.filter
:atau
Array.find
sumber
this.personService.getPersons()
kembaliundefined
Asumsikan saya memiliki array di bawah ini:
Jika kami ingin mendapatkan item dengan
Id = 1
danName = "oily skin"
, Kami akan mencoba seperti di bawah ini:Hasilnya akan mengembalikan skinName tersebut menjadi "Kulit berminyak".
Silakan coba, Terima kasih dan salam terbaik!
sumber
Ubah struktur data menjadi peta jika Anda sering menggunakan pencarian ini
sumber
Pilihan rapi yang belum disebutkan adalah menggunakan kombinasi
.find
dengan fungsi panah dan penghancuran. Ambil contoh ini dari MDN .sumber
dari TypeScript Anda bisa menggunakan metode native JS array filter ():
itu mengembalikan array dengan hanya elemen yang cocok dari array asli (0, 1 atau lebih)
Referensi: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
sumber
Gunakan kode ini di layanan Anda:
sumber
Coba ini
sumber