Angular 4 Enum不会在列表中更新

时间:2017-12-04 19:06:17

标签: angular enums ngfor

我的列表中有一个字段(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;
    }
}

1 个答案:

答案 0 :(得分:0)

我的猜测是,在您更改state后,它是一个字符串,而不是一个整数,这就是切换到default:的原因。并且您不会收到错误,因为该方法接受any参数类型。

尝试检查switch(parseInt(state)):

虽然更简洁的方法是将整数传递给方法并将参数声明更改为state: number,因为这样您将被告知有关格式错误的输入参数。