J'ai un composant et un service:
Composant:
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);
}
}
Un service:
@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;
}
}
Je souhaite obtenir l'élément de personne avec l'identifiant ('personID'). Le personID que j'obtiens de Routeparam. Pour cela, j'ai besoin de la boucle foreach? Mais je n'ai pas trouvé de solution pour cela.
angular
typescript
angular2-services
prendre au piège
la source
la source
Réponses:
Vous devez utiliser la méthode
Array.filter
:ou
Array.find
la source
this.personService.getPersons()
retourneundefined
Supposons que j'ai le tableau ci-dessous:
Si nous voulons obtenir un article avec
Id = 1
etName = "oily skin"
, nous essaierons comme ci-dessous:Le résultat renverra le skinName est "Peau grasse".
S'il vous plaît, essayez, merci et meilleures salutations!
la source
Transformez la structure de données en carte si vous utilisez fréquemment cette recherche
la source
Une option intéressante non encore mentionnée est d'utiliser combiner
.find
avec les fonctions fléchées et la déstructuration. Prenons cet exemple de MDN .la source
à partir de TypeScript, vous pouvez utiliser la méthode native JS array filter ():
il renvoie un tableau avec uniquement les éléments correspondants du tableau d'origine (0, 1 ou plus)
Référence: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
la source
Utilisez ce code dans votre service:
la source
Essaye ça
la source