Javascript 使用Angular 9和JS扩展表时出错(新打开的行获得以前的值)?

Javascript 使用Angular 9和JS扩展表时出错(新打开的行获得以前的值)?,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,所有代码演示和行为都在这里: 这里不需要解释太多 查看stackblitz,打开第一行(单击该行)。您将看到该行的详细信息。单击第二行,第一行的详细信息将被第二行的详细信息覆盖 此处的示例视频(问题是什么): 代码示例: 我想要什么?因此,我希望如果我打开第一行,我会看到第一行的详细信息,如果我打开第二行,我会看到第二行的详细信息,而不是用每一行的新打开来覆盖我的数据。而不是使用singleDetailsDispatch变量,直接从方法返回book对象并在HTML中调用该方法,因为当调用get

所有代码演示和行为都在这里:

这里不需要解释太多

查看stackblitz,打开第一行(单击该行)。您将看到该行的详细信息。单击第二行,第一行的详细信息将被第二行的详细信息覆盖

此处的示例视频(问题是什么):

代码示例:


我想要什么?因此,我希望如果我打开第一行,我会看到第一行的详细信息,如果我打开第二行,我会看到第二行的详细信息,而不是用每一行的新打开来覆盖我的数据。

而不是使用singleDetailsDispatch变量,直接从方法返回book对象并在HTML中调用该方法,因为当调用getSingleDispatch方法时,singleDetailsDispatch变量总是被替换

public getSingleDispatch(book: any) {
return book;
}


之所以存在此问题,是因为singleDetailsDispatch是公共变量,每当单击表行时都会进行更新。您可以直接将书传递给子组件,而不是调用函数,如下所示

  <ng-container *ngIf="book.expanded">
    <div class="d-flex row my-1">
      <app-child [dispatchDetails]="book" [closedDetail]="detail"
        class="w-50"></app-child>
    </div>
  </ng-container>


我需要更新我的stackblitz,因为这与项目中的“我的代码”不同。您的解决方案无效:/您的代码无效,因为我发出了一个http by id单击请求,并向其传递了一个新参数。这只是stackblitz的一个示例(基本),我需要一个不同的解决方案。我需要更新我的stackblitz,因为这与项目中的my代码不同。您的解决方案无效:/您的代码无效,因为我发出了一个http by id单击请求,并向其传递了一个新参数。这只是stackblitz的一个示例(基本),我需要一个不同的解决方案。