J'écris un composant angulaire qui a une propriété Mode(): string
.
Je voudrais pouvoir définir cette propriété par programme, pas en réponse à un événement.
Le problème est qu'en l'absence d'un événement de navigateur, une liaison de modèle {{Mode}}
n'est pas mise à jour.
Existe-t-il un moyen de déclencher cette détection de changement manuellement?
ChangeDetectorRef.detectChanges()
. les validateurs se déclenchaient avant que ma directive puisse mettre à jour la valeur d'une entrée.J'ai utilisé une référence de réponse acceptée et je voudrais mettre un exemple, car la documentation Angular 2 est très très difficile à lire, j'espère que c'est plus facile:
Importer
NgZone
:Ajoutez-le à votre constructeur de classe
Exécutez le code avec
zone.run
:la source
zone.run
code et quel est-il exactementdonations
?J'ai pu le mettre à jour avec markForCheck ()
Importer ChangeDetectorRef
Injecter et instancier
Enfin, marquez la détection des changements
Voici un exemple où markForCheck () fonctionne et detectChanges () ne fonctionne pas.
https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview
(Appuyez sur STOP / RUN pour l'exécuter à nouveau)
la source
Dans Angular 2+, essayez le décorateur @Input
Il permet une belle liaison de propriété entre les composants parent et enfant.
Créez d'abord une variable globale dans le parent pour contenir l'objet / la propriété qui sera transmis à l'enfant.
Créez ensuite une variable globale dans l'enfant pour contenir l'objet / la propriété transmis par le parent.
Ensuite, dans le html parent, où le modèle enfant est utilisé, ajoutez une notation entre crochets avec le nom de la variable enfant, puis définissez-la égale au nom de la variable parent. Exemple:
Enfin, lorsque la propriété enfant est définie dans le composant enfant, ajoutez le décorateur d'entrée:
Lorsque votre variable parent est mise à jour, elle doit transmettre les mises à jour au composant enfant, qui mettra à jour son code HTML.
De plus, pour déclencher une fonction dans le composant enfant, jetez un œil à ngOnChanges.
la source
ChangeDetectorRef.detectChanges () - similaire à $ scope. $ Digest () - c'est-à-dire, vérifiez uniquement ce composant et ses enfants
la source