我正在尝试使用 Primeng 主题在下拉列表中加载值。这是下拉启动的文档:
https://www.primefaces.org/primeng/#/dropdown
我想使用 ngfor 放置值,因为在我看到的文档模型中可以做到这一点,我收到了这个 json 对象的数组:
{
"$id": 1,
"@xdata.type": "XData.Default.Grupo",
"Id": 2,
"Descricao": "Tributada para Comercialização",
"EstoqueMin": 5,
"EstoqueMax": 20,
"Iat": "A",
"Ippt": "T",
"Ncm": "28220010",
"Validade": 0,
"PercentualLucro": 50,
"PercentualDesconto": 5,
"PercentualComissao": 5,
"NrCaracterCodInterno": 7,
"TipoProduto": 0,
"Foto": null,
"ItemSped": "00",
"IdGrupoTributario@xdata.proxy": "Grupo(2)/IdGrupoTributario",
"IdUnidadeProduto@xdata.proxy": "Grupo(2)/IdUnidadeProduto",
"IdSecao@xdata.proxy": "Grupo(2)/IdSecao",
"IdCategoria@xdata.proxy": "Grupo(2)/IdCategoria",
"IdSubCategoria@xdata.proxy": "Grupo(2)/IdSubCategoria",
"IdMarca@xdata.proxy": "Grupo(2)/IdMarca"
}
Run Code Online (Sandbox Code Playgroud)
我想显示描述,并在价值中捕获 id。
我的代码是这样的:
<div class="ui-g-12 ui-md-6">
<p-dropdown [options]="grupoList.Descricao" placeholder="Grupo" formControlName="IdGrupo" [autoWidth]="false" value="grupoList.Id"></p-dropdown>
</div>
Run Code Online (Sandbox Code Playgroud)
但不显示任何内容
如果我这样做:
<div class="ui-g-12 ui-md-6">
<p-dropdown [options]="grupoList" placeholder="Grupo" formControlName="IdGrupo" [autoWidth]="false"></p-dropdown>
</div>
Run Code Online (Sandbox Code Playgroud)
我有数字数组大小的空白选项,但我无法显示描述
@编辑
代码不起作用...
我的 ts 文件:
this.produtoAgilService.listarGrupo().subscribe(res=>{
for(let i in res){
this.grupoList.push(res[i])
}
this.grupoList.map(x =>({
label: x.Descricao,
value: x.Id
}))
Run Code Online (Sandbox Code Playgroud)
我的 html 文件:
<p-dropdown [options]="grupoList" placeholder="Grupo" formControlName="IdGrupo" [autoWidth]="false">
<ng-template let-item pTemplate="selectedItem">
<b>{{item.Descricao}}</b> <!-- highlighted selected item -->
</ng-template>
<ng-template let-item pTemplate="item">
{{item.Descricao}}
</ng-template>
</p-dropdown>
Run Code Online (Sandbox Code Playgroud)
有两种方法可以处理这种情况,要么必须将数组映射到具有成员标签和值的对象数组,要么需要执行自己的自定义模板。
地图法
应该没有理由更改您的 HTML。获取列表的值后,只需绘制一张地图即可。
class MyComponent {
grupoList = [];
ngOnInit() {
this.grupoList = this.somefunctionToGetValueArray().map(x => ({
label: x.Descricao,
value: x.$id
}));
}
}
Run Code Online (Sandbox Code Playgroud)
模板方法
这种方法可以在下拉列表中为项目选项创建 ng-templates。使用此方法,您不必更改代码。
<p-dropdown [options]="grupoList" placeholder="Grupo" formControlName="IdGrupo" [autoWidth]="false">
<ng-template let-item pTemplate="selectedItem">
<b>{{item.Descricao}}</b> <!-- highlighted selected item -->
</ng-template>
<ng-template let-item pTemplate="item">
{{item.Descricao}}
</ng-template>
</p-dropdown>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7849 次 |
最近记录: |