垫选择内的模板出口不起作用

问题描述 投票:0回答:2

我试图在带有模板出口的 mat-select 中传递#tmp,但无法显示选择选项。下面是我的代码和 stackblitz 的链接

    <mat-form-field>
        <mat-select 
           [ngModel]="selectedFoods" 
           (ngModelChane)="selectedFoods" placeholder="Favorite food" multiple>
        <ng-container *ngFor="let food of allfoods"
            [ngTemplateOutlet]="tmp"
            [ngTemplateOutletContext]="{ $implicit: food}">
        </ng-container>
        </mat-select>
    </mat-form-field>
    <ng-template #tmp let-food>
      <mat-option [value]="food.value">
        {{food.viewValue}}
      </mat-option>
    </ng-template>

https://stackblitz.com/edit/angular-mat-select-with-ngmodel-mujorn?embed=1&file=app/select-overview-example.ts

angular angular-content-projection
2个回答
5
投票

这似乎有效。我认为重要的部分仍然是在

<mat-options>
中包含
<mat-select>
,而不是作为模板的一部分。

https://stackblitz.com/edit/mat-select-with-ngtemplateoutlet-example?devtoolsheight=33&file=app/select-overview-example.html

<mat-form-field>
    <mat-select>
       <mat-option *ngFor="let food of allfoods"  [value]="food.value">
          <ng-container [ngTemplateOutlet]="tmp" [ngTemplateOutletContext]="{food: food}">
          </ng-container>
       </mat-option>    
    </mat-select>
</mat-form-field>

<ng-template #tmp let-food="food">
    {{food.viewValue}} <b> From Tmp</b>
</ng-template>


Dropdown showing template value in select


0
投票

你必须将 ng-template 放入 mat-select 中:

<mat-form-field>
  <mat-select [ngModel]="selectedFoods" (ngModelChane)="selectedFoods" 
    placeholder="Favorite food" multiple>
    <ng-container *ngFor="let food of allfoods"
      [ngTemplateOutlet]="tmp" [ngTemplateOutletContext]="{ $implicit: food}">
    </ng-container>
    <ng-template #tmp let-food>
      <mat-option [value]="food.value">
        {{food.viewValue}}
      </mat-option>
    </ng-template>
  </mat-select>
</mat-form-field>

这是一个工作示例:stackblitz

© www.soinside.com 2019 - 2024. All rights reserved.