Setting a normal map for only part of a material (single Principled shader) I am attempting to use a single Principled shader to get wood on one part of a knife, and metal on the rest.

I cannot figure out how to make the normals only apply to the wood part of the mesh.

Attempting to mix them like I did with the roughness and colour only makes the metal part turn black.
I am already aware of how to make this work with multiple shaders.

The image texture in the fac of the input indicates which parts are metal or wood.
It's probably easier to use separate Principled BSDF nodes for the wood and metal, or have the "clean" region over the metal in the normal map itself. (depends on how you're painting this normal map). 

However, if you want to use the setup in your example, it can work. You just need to use the geometry node to set the alternate normal to the default mesh normal instead of 1 (which is what the unconnected white socket does):