I think ive had a similar problem to you. My menu system uses child widgets for the buttons, one of these is “play”. Clicking on play opens another level which is called inside the child widget, but removing the whole menu fails using like what you have above.
My salvation was using Get All Widgets Of Class and a for each loop. This way I could kill all the widgets once the level changed.
IMPORTANT: I’m always in this situation. Remove from parent will not work if you Add to viewport 2 or more times by mistake.
So UE4 remove correctly, but a reference is lost and the UE4 will only remove the last one.
So be shure to not add if there is one already there. With this assured, removeFromPArent will work perceftly