嘿,我是新来的Ionic,我有很多疑问。在我的项目中,我有请求,每个请求都有一系列建议。但是,当我从数据库中获取列表时,我只想显示建议谁是"赢家",他们的要求是"完成的",你们明白了吗?我将显示代码。
html`
<ion-segment-button value="third" (click)="getProposal('Winner')">
Aceitas
</ion-segment-button>
打字稿
getProposals(status: string) {
if (status === 'Winner') {
this.requestService.getProposalsPartner(this.user.email, status).then( resposta => {
let proposalsWinner = resposta;
for (let i in proposalsWinner) {
if (proposalsWinner[i].request.status != 'Finished') {
this.proposals = resposta;
}
}
})
} else {
this.requestService.getProposalsPartner(this.user.email, status).then( resposta => {
this.proposals = resposta;
})
}
}
因此,我试图为遵循我提到的模式的建议做出一个建议,并仅在列表中列入列表。我已经进行了测试,并且它无法按照我想要的方式工作。我的代码上怎么了?
首先,值得一提的是,您不应该将for..in
与数组一起使用。
为什么? 引用来自此答案:
for ...在其他人提到的语法中是为了循环 对象的属性;由于JavaScript中的数组只是一个对象 具有数字属性名称(以及自动上升的"长度" 属性(,您可以从理论上循环与它一起循环。但是 问题是它不限于数字属性 值(请记住,即使方法实际上只是属性 值是一个闭合(,也不是按数字顺序迭代的。 因此,在语法中不应用于循环循环 阵列。
请参阅此问题查看与。
有关的更多答案。也就是说,代码中的主要问题是您并没有真正过滤resposta
数据,而是将resposta
分配给this.proposals
。要过滤,您可以使用(当然( Array#filter
,例如:
this.proposals = response.filter(res => res.request.status !== 'Finished');
最终代码:
getProposals(status: string) {
this.requestService.getProposalsPartner(this.user.email, status).then(response => {
if (status === 'Winner') {
this.proposals = response.filter(res => res.request.status !== 'Finished');
} else {
this.proposals = response;
}
});
}
模板:
<ng-container *ngIf="proposals">
<div *ngFor="let proposal of proposals">
{{ proposal | json }}
</div>
</ng-container>