在 ion-select 中使用带 *ngFor 的条件
Use conditions with *ngFor in ion-select
我是 Angular 6 和 Ionic 5 的新手,但目前正在学习。
我的 select 组件出现问题,我有这个 json:
{
"Error":200,
"Cliente":1,
"Nombre":"Antonio Galdamez Castillo",
"SaldoPuntos":"156.000000",
"Premios":[
{
"IdPremio":"1",
"Premio":" (UN Dolar) Mecaderia",
"Puntos":"10",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"2",
"Premio":" (Cinco US Dolares) Mercaderia",
"Puntos":"50",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"3",
"Premio":" (Diez US Dolares) Mercaderia",
"Puntos":"100",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"4",
"Premio":" (Veinte US Dolares) Mecaderia",
"Puntos":"200",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"7",
"Premio":" (Cincuenta US Dolares) Mercaderia",
"Puntos":"500",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"8",
"Premio":"0 (Cien US Dolares) Mercaderia",
"Puntos":"1000",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"9",
"Premio":"0 (Doscientos US Dolares) Mercaderia",
"Puntos":"2000",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
}
]
}
我的 Html 文件中有这个:
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar" >
<ion-select-option *ngFor="let article of data?.Premios" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ion-select>
</ion-item>
我似乎找不到如何在 select 中显示 Disponible = 1 的 Premios。
我试过 *ngIf 但显然我不能将它们一起使用。
我看到一些论坛说我应该在我的 TS 上进行调节,然后将 "clean" json 传递给我的 html 但我不确定该怎么做或者是否是甚至可以在我的 Html 文件上进行。
任何帮助将不胜感激,提前致谢。
使用这个管道
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'disponiblePipe',
})
export class DisponiblePipe implements PipeTransform {
transform(data: any[]) {
return data.filter(article => article.Disponible == "1");
}
}
像这样
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar" >
<ion-select-option *ngFor="let article of data?.Premios | disponiblePipe" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ion-select>
</ion-item>
检查 angular 文档 https://angular.io/guide/pipes
为此,您始终可以使用 ng-container,该容器不会在 DOM 中呈现,但会帮助您一起执行某种类型的 ngfor 和 ngif。未经测试,但这应该适合您。
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar">
<ng-container *ngFor="let article of data?.Premios | disponiblePipe">
<ion-select-option *ngIf="article. Disponsible" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ng-container>
</ion-select>
</ion-item>
我是 Angular 6 和 Ionic 5 的新手,但目前正在学习。 我的 select 组件出现问题,我有这个 json:
{
"Error":200,
"Cliente":1,
"Nombre":"Antonio Galdamez Castillo",
"SaldoPuntos":"156.000000",
"Premios":[
{
"IdPremio":"1",
"Premio":" (UN Dolar) Mecaderia",
"Puntos":"10",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"2",
"Premio":" (Cinco US Dolares) Mercaderia",
"Puntos":"50",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"3",
"Premio":" (Diez US Dolares) Mercaderia",
"Puntos":"100",
"TipoPremio":"Premio Propio",
"Disponible":"1",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"4",
"Premio":" (Veinte US Dolares) Mecaderia",
"Puntos":"200",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"7",
"Premio":" (Cincuenta US Dolares) Mercaderia",
"Puntos":"500",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"8",
"Premio":"0 (Cien US Dolares) Mercaderia",
"Puntos":"1000",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
},
{
"IdPremio":"9",
"Premio":"0 (Doscientos US Dolares) Mercaderia",
"Puntos":"2000",
"TipoPremio":"Premio Propio",
"Disponible":"0",
"Empresa":"FABIOS BOUTIQUE"
}
]
}
我的 Html 文件中有这个:
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar" >
<ion-select-option *ngFor="let article of data?.Premios" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ion-select>
</ion-item>
我似乎找不到如何在 select 中显示 Disponible = 1 的 Premios。 我试过 *ngIf 但显然我不能将它们一起使用。 我看到一些论坛说我应该在我的 TS 上进行调节,然后将 "clean" json 传递给我的 html 但我不确定该怎么做或者是否是甚至可以在我的 Html 文件上进行。 任何帮助将不胜感激,提前致谢。
使用这个管道
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'disponiblePipe',
})
export class DisponiblePipe implements PipeTransform {
transform(data: any[]) {
return data.filter(article => article.Disponible == "1");
}
}
像这样
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar" >
<ion-select-option *ngFor="let article of data?.Premios | disponiblePipe" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ion-select>
</ion-item>
检查 angular 文档 https://angular.io/guide/pipes
为此,您始终可以使用 ng-container,该容器不会在 DOM 中呈现,但会帮助您一起执行某种类型的 ngfor 和 ngif。未经测试,但这应该适合您。
<ion-item>
<ion-label>Premios</ion-label>
<ion-select [(ngModel)]="premio" ok-text="Seleccionar" cancel-text="Cancelar">
<ng-container *ngFor="let article of data?.Premios | disponiblePipe">
<ion-select-option *ngIf="article. Disponsible" value="{{article.IdPremio}}">{{article.Premio}}</ion-select-option>
</ng-container>
</ion-select>
</ion-item>