2

次のコードは、ネストされた 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] が定義されていないと不平を言いました。提案?何か不足していますか?

4

0 に答える 0