Как использовать @if angular с асинхронным каналом и псевдонимом для блока else?

У меня есть следующий случай, когда @if validatior (представленный в angular 17) используется с блоком else, проверяется с помощью наблюдаемого и использует псевдоним, чтобы избежать нескольких подписок. Как лучше всего использовать псевдоним с наблюдаемым в if еще заблокировать?

Возможно решение с помощью другого блока if, вложенного в проверку if и else. Какая реализация лучше всего позволит избежать дополнительного блока?

   @if (validation$ | async; as validation) {
      @if (validation === 'if') {
        <h2>If block</h2>
        <div>Message: {{validation}}</div>
      } @else {
        <h3>Else block</h3>
        <legend>{{validation$ | async}}</legend>
      }
    }

Ожидая такого разрешения (псевдокод), этот способ не поддерживается:

 @if ((validation$ | async; as validation) === 'if') {
     <div>Message: {{validation}}</div>
 } @else {
     <legend>Other component: {{validation}}</legend>
 }

Должен ли я использовать дополнительный блок if?

Образец Stackblitz

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это один из вариантов использования, который будет охвачен новым объявлением переменной шаблона @let, которое появится в версии 18.1.

@let validation = validation$ | async;

@if (validation === 'if') {
     <div>Message: {{validation}}</div>
} @else {
     <legend>Other component: {{validation}}</legend>
}

Кстати, не забывайте, что AsyncPipe возвращает ноль до тех пор, пока первое значение не будет отправлено по каналу.

пропущена закрывающая скобка для выражения let?

Sonu Sindhu 29.06.2024 06:25

извините, это был плохой копипаст, скобки не нужны.

Matthieu Riegler 29.06.2024 09:52

Другие вопросы по теме