如何在 angular 中使用异步方法获取价值?

How can get value with async method in angular?

提问人:Kadir ACIKGOZ 提问时间:9/4/2023 最后编辑:eekinciKadir ACIKGOZ 更新时间:9/4/2023 访问量:45

问:

我需要在 *ngFor 中使用 EventStateName,如何使用异步方法获取值,但出错。

显示屏 Display Screen

错误屏幕 Error Screen

我在未定义值后调用了没有异步方法的getEventStateById,我对此进行了搜索,但坦率地说,我从解释中理解不多。你能帮我解决这个问题吗?

export interface EventState { id?: number; name: string; }
export class DashboardComponent {
  events: Event[] = [];

  constructor(private eventService: EventService, private eventStateService: EventStateService) { }

  ngOnInit() {
    this.getEvents();
  }

  getEvents() {
    this.eventService.getAll().subscribe({
      next: (data) => {
        if (data != null && data.length > 0) {
          this.events = data;
        }
      }
    });
  }

  getEventStateById(id: number): EventState {
    let eventState: EventState;

    this.eventStateService.getById(id).subscribe({
      next: (data) => {
        if (data != null) {
          eventState = data
        }
      }
    });

    return eventState;
  }
}
<ng-container *ngIf="events != null && events.length > 0">
    <tr *ngFor="let item of events">
        <td>
            #{{ item.id }}
        </td>
        <td>
            {{ item.title }}
        </td>
        <td>
            {{ item.location }}
        </td>
        <td>
            {{ item.eventDate | date: 'dd.MM.yyyy' }}
            <i class="mdi mdi-circle-medium text-muted align-middle"></i>
            {{ item.eventDate | date: 'HH:mm' }}
        </td>
        <td>
            {{ item.insertedDate | date: 'dd.MM.yyyy' }}
            <i class="mdi mdi-circle-medium text-muted align-middle"></i>
            {{ item.insertedDate | date: 'HH:mm' }}
        </td>
        <td>
            {{ item.updatedDate | date: 'dd.MM.yyyy' }}
            <i class="mdi mdi-circle-medium text-muted align-middle"></i>
            {{ item.updatedDate | date: 'HH:mm' }}
        </td>
        <td>
            {{ item.eventStateId }}
            <!-- {{ getEventStateById(item.eventStateId).name }} -->
        </td>
    </tr>
</ng-container>
Angular 异步 方法

评论

0赞 Jacopo Sciampi 9/4/2023
每次 DOM 更新时,都会调用 DOM 导致无休止的 http 调用垃圾邮件。您可以在 BE 函数中添加每个项目所需的信息,或者在呈现表之前获取它们。getEventStateByIdgetAll

答: 暂无答案