簡體   English   中英

Angular HTTP 調用不會觸發? 沒發生什么事

[英]Angular HTTP call does not triggers? Nothing happens

我當然是 Angular 的新手 :) 我有一個列表,我使用 [(ngModel)] 來顯示這個列表的一個元素。 然后我想更新這個選定的元素並用一個按鈕保持更改。 這是我的代碼:

html組件

<div *ngIf="selectedAction">
  <label>Titre :
    <input [(ngModel)]="selectedAction.title" />
  </label><br />
  <label>Détails :
    <input [(ngModel)]="selectedAction.details" />
  </label><br />
  <label>Date limite :
      <input [ngModel]="selectedAction.date_limite | date:'dd/MM/yyyy'" (ngModelChange)="selectedAction.date_limite=$event" />
  </label><br />
  <button type="button" class="btn btn-primary"
    (click)="save();"
    style="float: none;">Modifier</button>
  <button type="button"class="btn btn-primary"
    (click)="clear()"
    style="float: none;">Cacher</button>
</div>
<!-- Affichage de la liste des actions -->
<h2>Ma liste d'action</h2>
  <ul class="list-group">
    <!-- Lors du click sur l'élément de la liste, la méthode onSelect() s'exécute -->
    <li *ngFor="let action of actions" (click)="onSelect(action)" class="list-group-item" style="padding: 0.25rem 1.25rem;">
      <span>{{ action.title | uppercase }}</span>
      <span>: {{ action.details }}</span>
        <button type="button" class="btn btn-primary" title="delete action"
          (click)="delete(action)">Archiver</button>
    </li>
  </ul>

帶有“修改器”按鈕的 save() 操作的 ts 組件

save(): void {
    this.actionService.updateAction(this.selectedAction);
  }

然后是服務組件

updateAction (action: Action): Observable<any> {
    return this.http.put(this.actionsUrl, action, httpOptions).pipe(
      catchError(this.handleError<any>('updateAction'))
    );
  }

實際上,當我單擊按鈕時,什么也沒有發生。

感謝幫助。

每當您在 Angular(基於 RxJS Observable)中調用 HTTP 時,您都應該訂閱它。 您忘記訂閱返回 Observable 的 updateAction() 方法。 只有當您訂閱Observable 時,才會發生 HTTP 調用。

save(): void {
    this.actionService.updateAction(this.selectedAction).subscribe();
 }

您需要更新訂閱方法中的列表。 這將作為回報重新呈現在 html 中以產生輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM