Tengo un HTML que se genera dinámicamente, no puedo modificarlo directamente.
En este html hay una <input class="MyInputClass">
clase con especificada (sin id) y muchos otros atributos. Me gustaría manejar esta entrada (es texto) para que haga algo (digamos: se escribe a sí mismo en la consola) cuando se escribe algo en esta entrada.
Si tuviera acceso a esto en html, lo haría así:
<input type="text" class="form-control (input)="onSearchChange($event.target.value)">
public onSearchChange(searchValue : string ) {
console.log(searchValue);
}
Fuente: evento de cambio de Angular 2 en cada pulsación de tecla
¿Es posible inyectar tal manejador?
No, no puedes.
Cuando escribes
<input type="text" (input)="doSomething()" />
En realidad no lo dices
Quiero que esta entrada haga algo en el evento de entrada.
Pero en realidad dices
Quiero que Angular cree un controlador de eventos que haga algo en el evento de entrada.
Esto significa que el HTML generado dinámicamente no tendrá la capacidad de tener ninguna característica angular.
PERO , lo que puede hacer es en su componente, en la ngOnInit
función, crear funciones de ventana, que destruirá en su ngOnDestroy
función.
Algo como esto
ngOnInit() {
window['onXXXInput'] = (value) => {
/* do something */
}
}
ngOnDestroy() {
delete(window['onXXXInput']);
}
Ahora en su HTML generado dinámicamente; simplemente puedes hacer
<input type="text" oninput="window.onXXXInput(this.value)" />
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras