Yes, this is a problem with all classes that inherit from NodePath (which is why it’s considered an anti-pattern), since NodePaths aren’t actually stored in the scene graph.
You can still manipulate the underlying TextNode, though, like this:
elements = render2d.findAllMatches("**/+TextNode")
for i in elements:
i.node().setText('New')