Подтвердить что ты не робот

Reset входное значение в angular 2

У меня есть следующее поле ввода:

<input mdInput placeholder="Name" #filterName name="filterName" >

Я хочу очистить значение при нажатии кнопки очистки:

<button (click)="clearFilters()">Clear</button>
Функция

app.component.ts :

filterName : string = null;
clearFilters() {

this.filterName = '';
}

Пожалуйста, дайте мне знать, что не так с выше, поскольку это не работает для меня.

Здесь jsfiddle https://jsfiddle.net/8fw8uq3x/

4b9b3361

Ответ 1

вы можете сделать что-то вроде этого

    <input  placeholder="Name" #filterName name="filterName" />
    <button (click) = "filterName.value = ''">Click</button>

или

Шаблон

<input mdInput placeholder="Name" [(ngModel)]="filterName" name="filterName" >
<button (click) = "clear()'">Click</button>

В компоненте

filterName:string;
clear(){
this.filterName = '';
}

Обновление

Если это форма

самый простой и чистый способ очистить формы, а также их состояния ошибок (грязные, престинные и т.д.)

this.form_name.reset();

для получения дополнительной информации о формах, читаемых здесь

https://angular.io/docs/ts/latest/guide/forms.html

PS: Как вы задали вопрос, в вашем вопросительном коде нет формы вы используете простую двухдневную привязку данных, используя ngModel, не используя FormControl.

Метод form.reset() работает только для formControls reset call

Плункер, чтобы показать, как это будет работать ссылка.

Ответ 2

Используйте @ViewChild to reset свой контроль.

Шаблон:

<input mdInput placeholder="Name" #filterName name="filterName" >

В коде:

@ViewChild('filterName') redel:ElementRef;

то вы можете получить доступ к своему управлению как

this.redel= "";

Ответ 3

Я знаю, что это старый поток, но я просто споткнулся.

Итак, как бы я это сделал, с вашей локальной переменной шаблона в поле ввода вы можете установить значение ввода, как показано ниже

<input mdInput placeholder="Name" #filterName name="filterName" >

@ViewChild() input: ElementRef

public clear() {
    this.input.NativeElement.value = '';
}

Довольно уверен, что это не вернет форму обратно в нетронутую, но вы можете reset это в той же функции, используя функцию markAsPristine()

Ответ 4

Вы должны использовать двустороннюю привязку. Нет необходимости иметь ViewChild, поскольку он тот же компонент.

Итак, добавьте ngModel для ввода и оставьте остальные. Здесь отредактированный код.

<input mdInput placeholder="Name" [(ngModel)]="filterName" name="filterName" >

Ответ 5

Вы можете использовать event.target.result, чтобы сбросить входные данные непосредственно от компонента.

event.target.value = ""

Ответ 6

Для сброса значения в angular 2 используйте:

this.rootNode.findNode("objectname").resetValue();