The URL replies with a 200 status code, so naturally Cloudflare caches it:
My advice is that you have the 404 page actually sending a 404 status, this way it will only cache for 3 minutes, but you can customize this with cache rules:
In frontend using Angular (SPA) which will always return 200 responses because not found is handled on the client side. The page shown is 404 page only but the status code is not 404.