Angular 5 переписывает всегда выбранную дату с текущей датой - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть поле ввода, в котором есть дата, но проблема в том, что, когда я не хочу выбирать дату, которая не является сегодняшней, каждый раз берется текущая дата и сохраняется в бэкэнде. Я хочу, чтобы в поле ввода был выбран, например, 15.11.2018, который будет сохранен. При методе сохранения в журнале консоли это говорит мне правильно, я думаю, что проблема только в редукторах

Это мой код

<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 голосов
/ 12 ноября 2018

В вашем методе сохранения

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(), в основном создавая новую текущую дату.

Вы можете подтвердить?

...