Как я могу передать контекст ветви else * ngIf в Angular 4? - PullRequest
0 голосов
/ 01 мая 2018

Следующий код уже немного зловреден с точки зрения вложенных тегов ng-this и ng-that, но было бы намного красивее, если бы был способ пропустить ngSwitch для ngIf и просто передать контекст в другую ветку, как

prop;context:{property: property}"

, как показано в * ngTemplateOutlet, также вызываемом в шаблоне. Я надеюсь, что сделал все возможное, чтобы найти способы сделать это, но до сих пор ни один вариант не представился мне, кроме как использовать (еще один!) Вложенный * ngTemplateOutlet. Разметка немного подрезана под необходимые вещи.

<ng-template #prop let-property="property"> 
  <node-widget
    [property]="property.Nodes[1]"
  >
  </node-widget>
</ng-template>

<ng-container *ngFor="let property of lefties(Properties); let index = index">
  <ng-container [ngSwitch]="index">
    <node-widget *ngSwitchCase="0"
      [property]="property.Nodes[1]"
    >
    </node-widget>
    <ng-container *ngSwitchDefault>
      <ng-container *ngTemplateOutlet="prop;context:{property: property}">
      </ng-container>
    </ng-container>
  </ng-container>
</ng-container>

Шаблон ng перерабатывается в другом месте шаблона, поэтому я не могу поместить его ближе к ngSwitch (по существу, внутри * ngFor). Я попытался заменить весь объект ngSwitch на * ngIf, но затем шаблон prop пожаловался, что у него не определено [свойство]. Предложения? Я что-то упустил?

...