2017-02-08 3 views
4

Я работаю на простом Угловой 2 приложении и у меня возникаю проблемы с перезагрузкой ngForm, но сохраняющие значение по умолчанию:Сброс формы и установить значение по умолчанию Угловой 2

Ожидаемого поведение при нажатии кнопки «Reset», поле ввода будет сброшен до значения по умолчанию («Default» в этом случае), а также все угловые конкретные классы, возвращающиеся к умолчанию (т.е. ng-нетронутый, ng-первозданный и т. д.)

Что я вижу, это значение по умолчанию также очищается, даже если я явно установил его после сброса формы

Фрагмент кода ниже:

HTML:

<form (ngSubmit)="onTrainSearchClick()" novalidate #trainForm="ngForm"> 
    <input type="text" [(ngModel)]="id" name="someId"/> 
    <button type="button" (click)="reset(trainForm)">Reset</button> 
    <button type="submit">Search</button> 
</form> 

машинопись (ушел из импорта и @Component):

export class TrainSearchTestComponent implements OnInit { 

    id: string = 'DEFUALT'; 

    constructor() { } 
    ngOnInit() { } 
    onTrainSearchClick(){ } 

    reset(form: NgForm){ 
    form.resetForm(); 
    this.id = 'DEFUALT'; 
    } 
} 

ответ

8

Использование form.reset:

form.reset({ id: this.id }); 

Оригинальный ответ (действительны для угловой @ 2)

Вы можете передать значение resetForm, который будет использоваться в качестве значения по умолчанию для формы:

form.resetForm({ id: this.id }); 

(если, конечно, ваша форма является FormGroup и имеет контроль с именем id, который должно иметь значение по умолчанию)

+0

это сработало для меня, но знаете ли вы, почему строка «this.id = 'Default'" не работает? спасибо –

+1

, потому что вы просто установили идентификатор строки в значение по умолчанию. Проблема в том, что вы не устанавливаете свой FormControl, который содержит ваш id для этого значения. – smnbbrv

+2

Я думаю, что метод теперь просто сбрасывается: form.reset() – Dave