Рассмотрим список всех пользователей в системе:Как вы запускаете функцию по результату NgFor в Angular2?
allUsers = {
a: {name:'Adam',email:'[email protected]',level:'admin',group:'Owners'},
b: {name:'Barbra',email:'[email protected]',level:'admin',group:'Owners'},
c: {name:'Chris',email:'[email protected]',level:'standard',group:'Managers'},
d: {name:'Dennis',email:'[email protected]',level:'standard',group:'Managers'},
e: {name:'Elizabeth',email:'[email protected]',level:'standard',group:'Staff'},
f: {name:'fred',email:'[email protected]',level:'visitor',group:'Visitor'},
}
Затем список пользователей на проекте:
usersList = ['a','b','d','f'];
Таким образом, вы имеете хорошую легкую функцию взять идентификатор пользователя и поиск остальных деталей пользователя:
getUser(userId){
console.log('Getting User with Id:', userId);
if(allUsers[userId]) return allUsers[userId];
}
затем в шаблоне вы используете * ngFor Перебери пользователь в списке, но вы хотите, чтобы затем LookUp полного набор деталей
<tr *ngFor="#userId in usersList" #user="getUser(userId)">
<td>{{user.name}}</td>
</tr>
Не работает ... Без создания пользовательских компонентов или других более сложных вещей, я не могу понять, как запустить функцию GetUser один раз для каждого пользователя. Я могу, конечно, использовать его снова и снова:
<td>{{getUser(userId).name}}</td>
но это не похоже на лучший способ. Есть ли более простой способ получить доступ к переменной userId и установить ее как локальную переменную?
Here's a plunker of what I've been playing with so far
Вы пробовали положить userId в фигурные скобки? Например: # user = "getUser ({{userId}})" –
вы можете просто отфильтровать список, как это, а затем перебрать вместо переменной someUsers: 'var someUsers = usersList.map (function (x) { return allUsers [x]; }) ' – Marc
картирование может работать ...Я должен был запускать его каждый раз, когда компонент работал, но мне нравится направление. Я не пробовал фигурные скобки, я не 100%, но я не думаю, что это правильный синтаксис. –