Angular 单击按钮时,组件不会重新加载

Angular 单击按钮时,组件不会重新加载,angular,Angular,我有以下按钮: <button mat-button (click)="toggleLikeQuestion(question['id'])" aria-label="Like this question."> {{!isQuestionLiked(question) ? 'Like' : 'Unlike'}} </button> 这是可行的,唯一的问题是,在喜欢或不喜欢该问题后调用su

我有以下按钮:

 <button mat-button 
         (click)="toggleLikeQuestion(question['id'])" aria-label="Like this question.">
         {{!isQuestionLiked(question) ? 'Like' : 'Unlike'}}
 </button> 
这是可行的,唯一的问题是,在喜欢或不喜欢该问题后调用
subscribe
函数后,按钮不会更新其内容(喜欢或不喜欢)。它只在我重新加载站点时更新。我应该怎么做才能在不重新加载站点的情况下进行更新

get question函数是http方法,所以它是可观察的,然后它将变成嵌套的可观察的,我不确定这是否会导致问题。
谢谢。

订阅后,您再次调用此.questionService.getQuestion(id),它只返回一个可观察的,没有任何效果。一个可观察到的只有在它被订阅时才有效


我建议您在ngOnInit中执行get请求,并将其保存在数组中。然后,当用户喜欢某个问题时,您可以在数组中找到该问题并相应地更改值,然后向后端发送put/patch请求。

订阅后,您将再次调用此.questionService.getQuestion(id),它只返回一个可观察的,没有任何效果。一个可观察到的只有在它被订阅时才有效

我建议您在ngOnInit中执行get请求,并将其保存在数组中。然后,当用户喜欢某个问题时,您可以在数组中找到该问题并相应地更改值,然后向后端发送put/patch请求

public isQuestionLiked = (q): boolean => q['likedBy'].some(s => s['id'] === this.studentId);

  toggleLikeQuestion(id: string) {
    this.questionService.getQuestion(id).subscribe((question) => {
      const isLiked = this.isQuestionLiked(question);
      if (question) {
        if (!isLiked) {
          this.questionService.likeQuestion(id, this.student).subscribe(() => this.questionService.getQuestion(id));
        } else {
          this.questionService
            .unlikeQuestion(id, this.student)
            .subscribe(() => this.questionService.getQuestion(id));
        }
      }
    });
  }