Pour une raison quelconque, je dois exécuter mon application en mode production. Quelle est la différence entre ces modes?
Pour une raison quelconque, je dois exécuter mon application en mode production. Quelle est la différence entre ces modes?
En mode développement, la détection des modifications effectue une deuxième exécution immédiatement après la première exécution et produit une erreur si une valeur liée a changé entre la première et la deuxième exécution. Cela aide à localiser les bogues où la vérification des valeurs a des effets secondaires ou les champs ou les fonctions ne renvoient pas la même valeur lors des appels suivants, ce qui nuit à la détection des changements d'Angular.
En mode développement, lors de la deuxième exécution de détection des modifications, Angular effectue également des comparaisons d'objets approfondies qu'il ne fera pas en production pour détecter les modifications de modèle qui ne sont pas autorisées.
Mettre à jour:
En mode de développement, un indice est également imprimé sur la console lorsque le service de désinfection HTML supprime les valeurs des liaisons [innerHTML]="..."
ou [ngStyle]="..."
. Voir aussi: Dans RC.1, certains styles ne peuvent pas être ajoutés à l'aide de la syntaxe de liaison
L'état de la documentation pour ApplicationRef.tick () :
La raison pour laquelle nous ne pouvons pas avoir de modifications supplémentaires est qu'en mode production, la détection des modifications ne s'exécute qu'une seule fois, ce qui signifie que chaque composant de l'arborescence des composants est examiné une fois (TTL = 1) ... du haut, en profondeur d'abord ordre. Ainsi, si, par exemple, une modification de la propriété d'entrée d'un composant enfant entraîne une modification d'une autre propriété que le composant parent a liée dans une vue / un modèle, la vue du composant parent ne sera pas mise à jour (car la détection de modification ne revisitera pas le composant parent en mode production ... en raison de la traversée d'arborescence "one-pass"). Il ne sera mis à jour que la prochaine fois qu'un événement se produira et la détection des modifications s'exécutera à nouveau - mais c'est trop tard!
Voici un Plunker qui viole la règle - un composant enfant a une
set
méthode sur une propriété d'entrée qui modifie une autre propriété d'entrée. Oui, c'est un exemple artificiel, mais il est plus facile à comprendre que le suivant:Un autre scénario dans lequel vous pourriez rencontrer ce problème concerne les canaux avec état. Découvrez cette réponse si c'est votre problème.
Vous devez décrire votre problème (dans une autre question SO). Il devrait y avoir un moyen de résoudre ce problème.
la source