我试图在递归列表中显示用户的结构,可以显示其中任何一个用户的信息
到目前为止,我已经设法正确地显示了他们,但似乎不能使它能够显示任何其他的信息,最高的(无论我点击它总是显示有关管理的信息)
包含单个用户的getUsersID(数字)返回列表(在本例中,admin id 1是最高的用户)
用户模型的所有下属都存储在podrizeni: User[];中。
strom.ts:
import { Component, OnInit, Input } from '@angular/core';
import { UserService } from '../services/user.service';
import { User } from '../models/user';
@Component({
selector: 'app-strom',
templateUrl: './strom.component.html',
styleUrls: ['./strom.component.css']
})
export class StromComponent implements OnInit {
//@Input () users: User [];
users: User[];
user: User;
selectedUser: User;
constructor(
private userService: UserService
) { }
ngOnInit() {
this.getUsers().subscribe(users => {
this.users = users;
this.users.forEach(user => {
console.log(user);
});
});
}
getUsers() {
return this.userService.getUsersID(1)
}
onSelect(user: User): void {
this.selectedUser = user;
}
}strom.html:
<ul>
<ng-template #recursiveList let-users>
<li *ngFor="let user of users" [class.selected]="user === selectedUser" (click)="onSelect(user)">
{{user.username}}
<ul *ngIf="user.podrizeni">
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: user.podrizeni}"></ng-container>
</ul>
</li>
</ng-template>
<ng-container *ngTemplateOutlet="recursiveList; context:{ $implicit: users }"></ng-container>
</ul>
<div *ngIf="selectedUser">
<h2>{{selectedUser.username | uppercase}} Details</h2>
<div>
<span>id: </span>{{selectedUser.id}}</div>
<div>
<label>name: {{selectedUser.username}}
</label>
</div>
</div>发布于 2018-08-18 20:04:39
看看我为您创建的这个示例StackBlitz项目。如果这是你想要实现的东西,请告诉我。
您可以看到用户列表。一旦你点击了一个用户,它就会调用一个API来获取用户的帖子。在您的例子中,它将调用userService.getUsersID。对于您的情况,可以将userPosts看作是podrizeni。
而且,为了简洁起见,我在AppComponent中做了所有事情。在你的例子中,它应该和你已经实现的一样。
另外,您应该为从属用户列表创建一个单独的组件。它应该接受一个userId。调用userService.getUsersID(userId)的责任应该是从属用户列表组件,而不是这个父用户列表组件。
https://stackoverflow.com/questions/51911502
复制相似问题