Favicon do Angular não aparece? Veja a correção
O Angular copia arquivos estáticos apenas se a configuração de build mandar. Um ícone que não é incluído pela entrada assets no angular.json nunca chega ao dist. O build tem sucesso e o arquivo não está lá.
O array assets decide o que existe
Todo outro framework copia um diretório inteiro por convenção. O Angular faz isso por configuração: a entrada assets do target de build copia apenas o que ela inclui. Scaffolds mais novos apontam para um diretório public/ com um glob; os mais antigos listam caminhos individuais, começando por src/favicon.ico.
Nada te avisa quando isso está errado. Adicione apple-touch-icon.png ao lado de um favicon.ico funcional em um projeto mais antigo e ele compila sem erro, depois dá 404 em produção: favicon.ico estava listado pelo nome e seu novo arquivo não.
O glob de assets (scaffolds mais novos)
"assets": [
{ "glob": "**/*", "input": "public" }
]Qualquer coisa em public/ é copiada. Em um projeto mais antigo, o array contém strings como "src/favicon.ico", e você adiciona uma linha por ícone.
Favicon do Angular não aparece: perguntas frequentes
Por que meu favicon do Angular não aparece?
O ícone não é incluído pela entrada assets no angular.json, então nunca chegou ao dist. Procure em dist/ depois do ng build. Se o arquivo não estiver lá, adicione-o ao array assets (ou ao glob de public/) e recompile.
Por que ele dá 404 em um sub-caminho?
Um href começando com barra resolve em relação à raiz do domínio. Compile com --base-href definido para o seu subdiretório para que a tag base no index.html fique correta, e escreva os hrefs do ícone relativos, sem barra inicial.
O @angular/pwa adiciona os meus ícones?
Ele cria um manifest e ícones PNG de placeholder e conecta o service worker. Os ícones são placeholders. Substitua os arquivos de imagem no lugar e mantenha o manifest e as entradas de assets gerados.