У меня есть компонент Angular2 (назовем его dataset-create
), который включает в себя форму:Angular2: Файл этикетки вход управления сохраняет свое состояние после разрушения компонента
<form novalidate="novalidate">
<button type="button" (click)="onClose()">close</button>
<button type="submit" (click)="onSubmit()">submit</button>
<label for="dataFileD">data</label>
<input id="dataFileD" type="file" (change)="onFileChange($event)">
</form>
В close()
и submit()
функции испускает (close)
событие, которое делает родительский компонент для отключения dataset-create
компонента:
<div [ngSwitch]="mode">
<template [ngSwitchWhen]="'create'">
<dataset-create [dataset]="dataset" (close)="onDatasetFormClose()"></dataset-create>
</template>
<template [ngSwitchWhen]="'detail'">
<dataset-detail [dataset]="dataset" (close)="onDatasetFormClose()"></dataset-detail>
</template>
</div>
Это делается путем связывания кости излучаемого (close)
события dataset-create
компа onent следующей функции в родительском компоненте:
private onDatasetFormClose() {
this.mode = "list";
}
Так вот мой первый вопрос: Каждый раз, когда mode
переменная переключает между 'create'
и что-то иначе dataset-create
компонент создается и уничтожается. Верный? Верный! Я проверил его, добавив console.log("foo");
в constuctor на компоненте dataset-create
.
Вот моя проблема сейчас: Если выше указано правильно, почему метка ввода файла сохраняет значение после отправки (таким образом, уничтожая компонент dataset-create
) форму?
Чтобы сделать вещи более ясно, вот шаги, я следую:
- я поставил как-то
mode
переменной'create'
. Построен компонентdataset-create
. Кнопка ввода файла теперь имеет меткуNo file chosen
. - Я нажимаю кнопку ввода файла и выбираю файл (скажем,
foo.png
). Теперь на этикетке ввода файла есть меткаfoo.png
. - Я нажимаю кнопку отправки в форме. Компонент
dataset-create
уничтожен. - Я установил как-то
mode
переменную до'create'
. Построен компонентdataset-create
. Кнопка ввода файла теперь имеет меткуfoo.png
. Зачем? Почему метка управления вводом файлов сохраняет свое предыдущее состояние?
Какая версия angular2 вы используете? –
О, ты прав, я совсем забыл об этом. Я использовал beta0. Я просто обновился до бета1, и проблема исправлена! Если вы можете добавить короткий ответ, говорящий, что это ошибка beta0, я буду считать его правильным. Спасибо чувак! – AstrOne