If you don’t get any better answers, I would isolate each canvas into a separate component, which should eliminate a host of problems with attempting to access things being generated inside that ngFor loop.
Hello,
with your ngFor you create a bunch of canvas with the same #pieCanvas and different id’s. @ViewChild fetch the first hit and only the first hit of his query to #pieCanvas
In your loop you fetch each canvas by id and create every i a new chart, that is assigned/overwrittes again and again the same #pieCanvas