angular - Pasar una variable como parámetro en HTML
Estoy intentando llamar a una función que anula el campo clickeado,
si escribo (focus)="this.element.task=null", funciona, pero si hago (focus)="resetFields(this.element.task)", ¿hay alguna manera de lograr esto?
método resetFields:
resetFields(elm) {
elm = NULL;
this.submitted = false;
}
Ejemplo en Stackblitz: http://stackblitz.com/edit/angular-nvgtec
Respuesta #1
Javascript se pasa por valor, solo que para los objetos el valor es la referencia a ese objeto. Ve esta pregunta.
Entonces, la respuesta a tu pregunta original es no. No puedes modificar algo dentro de la función y ver los resultados fuera de la función, ya que los cambios son visibles en el ámbito actual de la función. Solo puedes enviar un objeto a esa función y modificar ese objeto.
resetFields(elm) {
elm = NULL; //won't work, will only set reference to elm to null inside resetFields function scope
elm.someProperty = null; //will work
}
Sin embargo, podrías hacerlo así:
resetFields(elm, property) {
elm[property] = null;
}
(focus)="resetFields(this.element, 'task')"
Demostración de stackblitz actualizada.
Respuesta #2
Si estás usando formularios reactivos entonces ...
this.form.reset(); // it will reset all data to blank
Si estás usando ngModel entonces
<input name="name" [(ngModel)]="form.name" (focus)="resetData()">
resetData(){
this.form = {};
}
