角度专家!我试图理解 Angular 中的异步管道,但我陷入了一个基本场景。我在 UI 中有两个选择元素,一个包含帖子,一个包含相关评论。我想为显示帖子的选择元素设置一个帖子(最后一个)作为最初选择的一个,并且我想使用所选项目来过滤第二个选择中的相关评论。这在我的代码中不起作用,为此我在 Stackblitz 中创建了一个简化版本:
https://stackblitz.com/edit/angular-p6ynuy
你们中的任何人都可以向我解释我做错了什么吗?这是相关的代码片段和 HTML:
ngOnInit() {
this.postList$ = this.getPostList();
// latestPost$ is not is use yet, but maybe it could be used to set the selected post?
this.latestPost$ = this.postList$
.pipe(
map(posts => posts[posts.length - 1])
);
this.selectedPost$ = combineLatest([
this.postList$,
this.postSelectedAction$
])
.pipe(
map(([posts, selectedPostId]) => posts.find(post => post.id === selectedPostId))
);
this.commentList$ = this.selectedPost$
.pipe(switchMap(
post => this.getCommentList(post)
));
}
<select [ngModel]="selectedPost$ | async" (change)="onSelected($event.target.value)">
<option *ngFor="let post of postList$ | async" [ngValue]="post">
{{post.id}} {{post.title}}
</option>
</select>
<select>
<option *ngFor="let comment of commentList$ | async" [ngValue]="comment">
{{comment.id}} {{comment.postId}} {{comment.name}}
</option>
</select>