我的列表中有一个字段(item.state)(* ngFor),我从API加载,处理方法并以这种方式显示在屏幕上:
<div class="posts col-md-12" *ngFor="let item of objectives.results" (click)="openItem(modalObjective, item)">
<div class="row">
<h4 class="col-md-11">{{item.title}}</h4>
</div>
<div class="row">
<span class="col-md-2">{{item.description}}</span>
<span class="col-md-3">{{item.ownerPersonName}}</span>
<span class="col-md-3">{{setStateEnum(item.state)}}</span>
<div class="progress col-md-4">
<span class="col-md-2">{{item.state}}%</span>
<div class="progress-bar" role="progressbar" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:70%">
<span class="sr-only">70% Complete</span>
</div>
</div>
</div>
</div>
单击某个项目时,我会显示一个包含此项目详细信息的模态。在这种模式中,我可以改变&#34;状态&#34;这个项目通过&#34;选择html组件&#34;。没关系,但是,当我更改状态并关闭模态时,此项目的状态已更新,但这次是一个数字。该属性没有进入方法&#34; setStateEnum&#34;再次,这只显示从API返回的值(一个整数)。我怎样才能每次更新状态时,属性都会传递给&#34; setStateEnum&#34;方法再次显示字符串值?
TS中的setStateEnum方法:
rivate setStateEnum(state: any) {
switch (state) {
case 0:
return "Waiting";
case 1:
return "Running";
case 2:
return "Finished";
case 3:
return "Approved";
default:
return state;
}
}
谢谢!
更新
我只需要在我的开关盒中添加一个parseInt,而不是它的工作!就像masterfloda说的那样。问题是:该属性正在通过方法&#34; setStateEnum&#34;然后转到&#34;默认&#34;,因为该方法正在从更新中接收字符串!
像这样:
private setStateEnum(state: any) {
switch (parseInt(state)) {
case 0:
return "Waiting";
case 1:
return "Running";
case 2:
return "Finished";
case 3:
return "Approved";
default:
return state;
}
}
答案 0 :(得分:0)
我的猜测是,在您更改state
后,它是一个字符串,而不是一个整数,这就是切换到default:
的原因。并且您不会收到错误,因为该方法接受any
参数类型。
尝试检查switch(parseInt(state)):
虽然更简洁的方法是将整数传递给方法并将参数声明更改为state: number
,因为这样您将被告知有关格式错误的输入参数。