Para utilizar uploadTask.snapshotChanges en Angular y devolver la URL de descarga cuando finalice la subida del archivo, puedes seguir estos pasos:

  1. Primero, necesitas importar los módulos necesarios desde la biblioteca de Firebase:
import { AngularFireStorage, AngularFireStorageReference, AngularFireUploadTask } from '@angular/fire/storage';
  1. Luego, en tu componente o servicio, inyecta la dependencia de AngularFireStorage:
constructor(private storage: AngularFireStorage) {}
  1. Crea una referencia al archivo que quieres subir utilizando ref:
const fileRef = this.storage.ref(file.name);
  1. Crea una tarea de subida utilizando upload y pasa la referencia del archivo como argumento:
const task = this.storage.upload(file.name, file);
  1. Puedes utilizar snapshotChanges para observar los cambios en el estado de la tarea de subida. Esto te permite obtener información sobre el progreso de la subida y detectar cuando se ha completado:
task.snapshotChanges().pipe(
  finalize(() => {
    // La subida ha finalizado
  })
).subscribe();