O | async é usado quando o objetivo é apenas ler dados (GET) e mostrá-los na view. Ele automaticamente se inscreve e cancela a inscrição do Observable.

Exemplo

// lista.component.ts
@Component({
  standalone: true,
  imports: [CommonModule],  // Necessário para o '| async'
  // ...
})
export class ListaComponent {
  // '$' depois do nome mostra que é um Observable
  produtos$ = this.produtoService.getProdutos();
 
  constructor(private produtoService: ProdutoService) {}
}
<!-- lista.component.html -->
<ul>
  <li *ngFor="let item of produtos$ | async">
    {{ item.nome }} - {{ item.preco | currency }}
  </li>
</ul>

Acessando Propriedades do Objeto

<div *ngIf="usuario$ | async as user; else loading">
  <h1>Perfil de {{ user.nome }}</h1>
  <p>Email: {{ user.email }}</p>
  <p>Cargo: {{ user.role }}</p>
</div>
 
<ng-template #loading>
  <p>Carregando dados do usuário...</p>
</ng-template>