У меня есть компонент и сервис:
Составная часть:
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);
}
}
Обслуживание:
@Injectable()
export class PersonService {
getPersons(){
var persons: Person[] = [
{id: 1, firstName:'Hans', lastName:'Mustermann', email: 'mustermann@test.com', company:'Test', country:'DE'},
{id: 2, firstName:'Muster', lastName:'Mustermann', email: 'mustermann@test.com', company:'test', country:'DE'},
{id:3, firstName:'Thomas', lastName:'Mustermann', email: 'mustermannt@tesrt.com', company:'test', country:'DE'}
];
return persons;
}
}
Я хочу получить элемент Person с идентификатором ('personID'). Персональный идентификатор, который я получаю от Routeparam. Для этого мне нужен цикл foreach? Но я не нашел для этого решения.
angular
typescript
angular2-services
ловушка
источник
источник
Ответы:
Вам нужно использовать метод
Array.filter
:или
Array.find
источник
this.personService.getPersons()
возвращаетсяundefined
Предположим, у меня есть ниже массив:
Если мы хотим получить товар с
Id = 1
иName = "oily skin"
, мы попробуем, как показано ниже:В результате будет возвращено имя skinName - «Жирная кожа».
Пожалуйста, попробуйте, спасибо и всего наилучшего!
источник
Преобразуйте структуру данных в карту, если вы часто используете этот поиск
источник
Еще не упомянутый изящный вариант - использовать комбинирование
.find
со стрелками и деструктуризацией. Возьмите этот пример из MDN .источник
из TypeScript вы можете использовать собственный метод JS array filter ():
он возвращает массив только с совпадающими элементами из исходного массива (0, 1 или более)
Ссылка: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
источник
Используйте этот код в своем сервисе:
источник
Попробуй это
источник