Can we pass [1,2,3] to parameter p of template A
and pass [4,5,6] to parameter q of template B from *ngIf?
<div *ngIf="true;then A;else B"></div>
<ng-template #A let-p>p: {{p}}</ng-template>
<ng-template #B let-q>q: {{q}}</ng-template>
Here is my attempt but it does not work.
<div *ngIf="true;then A; context:{$implicit:[1,2,3]};else B;context:{$implicit:[4,5,6]}"></div>
<ng-template #A let-p>p: {{p}}</ng-template>
<ng-template #B let-q>q: {{q}}</ng-template>
>Solution :
I think with single ternary operator is difficult to work for your requirement.
Approach 1: With [ngSwitch] + [ngTemplateOutlet]
<div [ngSwitch]="true">
<ng-container
*ngSwitchCase="true"
[ngTemplateOutlet]="A"
[ngTemplateOutletContext]="{ $implicit: [1, 2, 3] }"
>
</ng-container>
<ng-container
*ngSwitchDefault
[ngTemplateOutlet]="B"
[ngTemplateOutletContext]="{ $implicit: [4, 5, 6] }"
>
</ng-container>
</div>
Approach 2: With [ngTemplateOutlet] and multiple ternary operators
<div>
<ng-container
[ngTemplateOutlet]="true ? A : B"
[ngTemplateOutletContext]="{ $implicit: true ? [1, 2, 3] : [4, 5, 6] }"
>
</ng-container>
</div>
Demo Apprach 1 & 2 @ StackBlitz