次のコードは、ネストされた ng-this および ng-that タグの点ですでに少し残虐行為ですが、ngIf の ngSwitch をスキップしてコンテキストを else に渡す方法があれば、非常にきれいになります。のような枝
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-template はテンプレートの別の場所で再利用されるため、ngSwitch の近く (基本的に *ngFor 内) に配置することはできません。ngSwitch 全体を *ngIf に置き換えようとしましたが、prop テンプレートは [property] が定義されていないと不平を言いました。提案?何か不足していますか?