Mam komponent i usługę:
Składnik:
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);
}
}
Usługa:
@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;
}
}
Chcę uzyskać pozycję osoby o identyfikatorze („personID”). Identyfikator osoby, który otrzymałem z Routeparam. Do tego potrzebuję pętli foreach? Ale nie znalazłem na to rozwiązania.
angular
typescript
angular2-services
pułapka
źródło
źródło
Odpowiedzi:
Musisz użyć metody
Array.filter
:lub
Array.find
źródło
this.personService.getPersons()
zwracaundefined
Załóżmy, że mam poniższą tablicę:
Jeśli chcemy otrzymać przedmiot z
Id = 1
iName = "oily skin"
, postaramy się jak poniżej:Wynik zwróci skinName to „Skóra tłusta”.
Spróbuj, dzięki i pozdrawiam!
źródło
Jeśli często korzystasz z tego wyszukiwania, przekształć strukturę danych w mapę
źródło
Sprytną opcją, o której jeszcze nie wspomniano, jest użycie kombinacji
.find
z funkcjami strzałkowymi i destrukturyzacją. Weź ten przykład z MDN .źródło
z TypeScript możesz użyć natywnej metody JS array filter ():
zwraca tablicę zawierającą tylko pasujące elementy z oryginalnej tablicy (0, 1 lub więcej)
Źródła: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
źródło
Użyj tego kodu w swojej usłudze:
źródło
Spróbuj tego
źródło