Por algum motivo, preciso executar meu aplicativo no modo de produção. Qual é a diferença entre esses modos?
Por algum motivo, preciso executar meu aplicativo no modo de produção. Qual é a diferença entre esses modos?
No modo de desenvolvimento, a detecção de alterações faz uma segunda execução imediatamente após a primeira execução e produz um erro se qualquer valor de limite mudou entre a primeira e a segunda execução. Isso ajuda a localizar bugs onde a verificação de valores tem efeitos colaterais ou campos ou funções não retornam o mesmo valor em chamadas subsequentes, o que prejudica a detecção de alterações do Angular.
No modo de desenvolvimento, durante a segunda execução de detecção de alteração, o Angular também faz algumas comparações profundas de objetos que não fará na produção para detectar alterações de modelo não permitidas.
Atualizar:
No modo de desenvolvimento, uma dica também é impressa no console quando o serviço de limpeza de HTML remove os valores das ligações [innerHTML]="..."
ou [ngStyle]="..."
. Veja também: Em RC.1 alguns estilos não podem ser adicionados usando a sintaxe de ligação
Os documentos para o estado ApplicationRef.tick () :
A razão pela qual não podemos ter mudanças adicionais é porque no modo de produção, a detecção de mudanças é executada apenas uma vez, o que significa que cada componente na árvore de componentes é examinado uma vez (TTL = 1) ... do topo, em profundidade primeiro ordem. Portanto, se, por exemplo, uma mudança na propriedade de entrada de um componente filho causar uma mudança em alguma outra propriedade que o componente pai tenha vinculado a uma visão / modelo, a visão do componente pai não será atualizada (porque a detecção de mudança não revisitará o componente pai no modo de produção ... por causa da travessia da árvore "uma passagem"). Ele só será atualizado na próxima vez que ocorrer algum evento e a detecção de alterações for executada novamente - mas já é tarde!
Aqui está um Plunker que viola a regra - um componente filho tem um
set
método em uma propriedade de entrada que modifica outra propriedade de entrada. Sim, é um exemplo inventado, mas é mais fácil de entender do que o próximo:Outro cenário em que você pode encontrar esse problema é com canais com estado. Verifique esta resposta se esse for o seu problema.
Você deve descrever seu problema (em outra pergunta do SO). Deve haver uma maneira de consertar isso.
fonte