JavaScript Renderer2, ViewChild and ElementRef. Why do we need/use such things in Angular?

When we access the native element directly we are giving up on Angular’s DOM abstraction and miss out on the opportunity to be able to execute also in none-DOM environments such as native mobile, native desktop, web worker or server-side rendering.

Remember that Angular is a platform, and the browser is just one option for where we can render our app.