Bueno, en realidad tiene 100% de sentido porque HTML se procesa secuencialmente y cuando esta página HTML se procesa línea por línea, cuando llega a esta imagen, la línea y procesa la imagen, nuestro phone.imageUrlaún no está definido.
Y de hecho, Angular JS aún no ha procesado este fragmento de HTML, y aún no ha buscado estos marcadores de posición ni ha sustituido estas expresiones por los valores. Entonces, lo que termina sucediendo es que el navegador obtiene esta línea e intenta buscar esta imagen en esta URL.
Y, por supuesto, esta es una URL falsa, si todavía tiene esos bigotes y llaves y, por lo tanto, le da un 404, pero una vez que Angular se encarga de esto, sustituye esta URL por la correcta, y luego todavía vemos la imagen, pero el mensaje de error 404 permanece en nuestra consola.
Entonces, ¿cómo podemos solucionar esto? Bueno, no podemos encargarnos de esto usando trucos HTML habituales. Pero podemos encargarnos de ello usando Angular. Necesitamos decirle al navegador de alguna manera que no intente buscar esta URL, pero que al mismo tiempo la obtenga solo cuando Angular esté listo para la interpretación de estos marcadores de posición.
Bueno, una forma de hacerlo es poner un atributo Angular aquí en lugar del HTML estándar. Y el atributo Angular es solo ng-src. Entonces, si decimos eso ahora, regrese, verá que ya no hay errores porque la imagen solo se obtuvo una vez que Angular obtuvo este HTML y tradujo todas las expresiones a sus valores.