No OnInit, os objetos da view do componente ainda não são disponibilizados, tanto que, ao acessar o this.userNameInput, um erro de execução estilo "objeto não disponível" é mostrado. Então, procurei um evento que me disponibilizasse essa instância: achei 2: o AfterViewInit e o AfterViewChecked (esse último dispara várias vezes, o que fará com que o foco fique sempre no Input, não deixando o usuário passar para os outros campos), então, optei pelo primeiro evento, que só dispara 1x:
ngAfterViewInit(): void {
if(this.platformDetectorService.isPlatformBrowser()) {
this.userNameInput.nativeElement.focus();
}
}