Quando o formulário é submetido, uma objeto foto
sem qualquer atributo substitui a foto que estava-lá para limpar o formulário. Se a foto não tem mais título, como a AE conseguirá continuar a mostrar o título? Não vejo sentido ele manter, talvez não tenha entendido a sua pergunta. Se quiser manter, crie outra propriedade em $scope
e guarde o título lá.
Sobre o formulário de validação, o termo "melhor" não ajuda muito, tudo depende do que seu cliente quer.
Para você fazer o que está querendo, vai ter que abdicar dos campos de mensagem que estão em seu HTML e que consultam o formulário.
Terá que criar uma propriedade extra em $scope
para cada mensagem que erro que houver no seu formulário e usá-lo via AE lá no HTML.
No ato de submeter o formulário, vai ter que consultar$scope.$scope.formulario.$valid
. Se for inválido, vai testar cada campo individualmente e perguntar qual está invalido. Encontrado o inválido, adicionará a propriedade com a mensagem de erro deste campo em $scope
. Como é você que está populando, simplesmente não popula quando o formulário for submetido e ainda estiver válido.
Resumindo: a maior vantagem do Angular é também sua maior desvantagem. Ele nos ajuda demais no desenvolvimento, nos tornando produtivos. Porém, se você quiser mudá-lo um pouquinho, terá um trabalhinho. Fazendo tudo em JavaScript puro, teríamos muito mais trabalho, mas teríamos o controle fino de todo o código escrito.