MI SOLUCIÓN
Consiste en añadir un nuevo observador para el caso específico de borrar una letra, lo llamé deleteLetter y suscribirse al observable onKeyDown$.
No es una buena implementación añadir un elseIf al observador insertLetter porque como su nombre lo dice, únicamente es para insertar letras.
Acá mi código:
/**
* Aplicación de fromEvent en PlatziWordle:
* fromEvent nos ayuda a atrapar eventos generados por elementos en el DOM.
*/
import { fromEvent } from "rxjs";
const letterRows = document.getElementsByClassName("letter-row");
const onKeyDown$ = fromEvent(document, "keydown");
let letterIndex = 0;
let letterRowIndex = 0;
const insertLetter = {
next: (event) => {
const pressedKey = event.key.toUpperCase();
if (pressedKey.length === 1 && pressedKey.match(/[a-z]/i)) {
let letterBox =
Array.from(letterRows)[letterRowIndex].children[letterIndex];
letterBox.textContent = pressedKey;
letterBox.classList.add("filled-letter");
letterIndex++;
}
},
};
const deleteLetter = {
next: (event) => {
const pressedKey = event.key.toUpperCase();
if (pressedKey === 'BACKSPACE') {
let letterBox =
Array.from(letterRows)[letterRowIndex].children[letterIndex-1];
letterBox.textContent = null;
letterBox.classList.remove("filled-letter");
letterIndex--;
}
},
};
onKeyDown$.subscribe(insertLetter);
onKeyDown$.subscribe(deleteLetter);
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?