Angular 5会始终用当前日期覆盖所选日期

时间:2018-11-12 09:27:28

标签: html angular typescript reducers

我有一个输入字段,其中有一个日期,但是问题是当我不想选择一个不是今天的日期时,每次都将当前日期保存在后端。 我想要是否在输入字段中选择例如15.11.2018将被保存。 在控制台日志中的save方法中,它告诉我正确的事情,我只认为问题出在reducers中

这是我的代码

<app-input-field label="{{'general.#date'|translate}}">
                    <input type="date" step="1" [ngModel]="newCosts.choosenDate| date:'yyyy-MM-dd'" (ngModelChange)="newCosts.choosenDate = $event">
                </app-input-field>

save() {
    this.newCosts.choosenDate = new Date(this.newCosts.choosenDate)
    this.store.dispatch(new UpsertCostsAction({
        costs: { ...this.newCosts } 

    }))
    this.newCosts = emptyCosts()
}

export interface Costs {
    id: string     
    choosenDate: Date
}
export function emptyCosts(): Costs {
    return {
        id: "",
        choosenDate: new Date(),

    }
}

减速器

function toCostsViewModel(costs: Costs): Costs {
    costs.choosenDate = new Date(costs.choosenDate)

    return costs
}

function upsertCosts(state: ValueItemDatabaseState, action: UpsertCostsInternalAction): ValueItemDatabaseState {
    action.payload.forEach(cost => {
        state.costs = state.costs.set(cost.id, toCostsViewModel(cost))
    })
    return {
        ...state
    }
}

1 个答案:

答案 0 :(得分:0)

使用您的保存方式

save() {
    this.newCosts.choosenDate = new Date(this.newCosts.choosenDate)
    this.store.dispatch(new UpsertCostsAction({
        costs: { ...this.newCosts } 

    }))
    this.newCosts = emptyCosts()
}

,然后您运行this.newCosts = emptyCosts()emptycosts会覆盖choosenDate: new Date(),基本上会创建一个新的现在日期。

您可以确认吗?