constructor(srv: SomeService)
constructor(private srv: SomeService)
constructor(public srv: SomeService)
What is the difference between these DI's and which one should I prefer?
That's not related to Angular DI, that's only related to TS class constructors.
The later 2 implicitly create a class field named srv while the first does not. In the first example srv will only be available within the constructor body.
private vs public for the injected srv)?