javascript - Angular mat-tabell uppdateras inte när man använder observable


Jag har problem med att mat-tabellen inte laddar några nya data efter att den först har skapats. Jag har bytt från en vanlig HTML-tabell som använder ngFor för att generera raderna, vilket fungerade bra med samma datakälla. Detta är mat-tabellen HTML som jag använder:

<table mat-table [dataSource]="stocks" multiTemplateDataRows class="mat-elevation-z8">

    <ng-container matColumnDef="symbol">
      <th mat-header-cell *matHeaderCellDef> Symbol </th>
      <td mat-cell *matCellDef="let stock"> {{stock.symbol}} </td>
    </ng-container>

    <ng-container matColumnDef="price">
      <th mat-header-cell *matHeaderCellDef> Price </th>
      <td mat-cell *matCellDef="let stock"> {{stock.price}} </td>
    </ng-container>

    <ng-container matColumnDef="change">
      <th mat-header-cell *matHeaderCellDef> Change </th>
      <td mat-cell *matCellDef="let stock"> {{stock.change}} </td>
    </ng-container>

    <ng-container matColumnDef="changePercent">
      <th mat-header-cell *matHeaderCellDef> % Change </th>
      <td mat-cell *matCellDef="let stock"> {{stock.changePercent}} </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="columns"></tr>
    <tr mat-row *matRowDef="let row; columns:columns;" class="example-detail-row"></tr>
  </table>

Detta är den vanliga HTML-tabellen som fungerade:

<table>
        <tr>
          <th>Symbol</th>
          <th>Price</th>
          <th>Change</th>
          <th>% Change</th>
        </tr>
        <tr *ngFor="let stock of stocks | async" class="stock">
          <td>{{ stock.symbol }}</td>
          <td>{{ stock.price }} {{ stock.currency }}</td>
          <td>{{ stock.change }}</td>
          <td>{{ stock.changePercent }}</td>
        </tr>
    </table>

Variabeln stocks är av typen Observable. Har du några förslag på varför tabellen inte längre uppdateras när värdet på "stock" ändras?

Redigera: Aktier ställs in med detta:

constructor(private storageService: StorageService){
 this.stocks = this.storageService.getAllStocks(); 
}

Funktionen getAllStocks() gör flera förfrågningar till ett API och returnerar dem sedan som en Observable

Redigera2:

getAllStocks(): Observable<any[]> {
return of(this.allStocks);

}

där allStocks är en lista över aktier inom en tjänst