Angular: Dans les documents Lifecycle Hooks, il n'est pas clair que ngOnChanges n'est pas appelé lorsque les entrées ne sont pas utilisées

Créé le 27 mars 2018  ·  1Commentaire  ·  Source: angular/angular

Je soumets un...

[x] Documentation issue or request

Comportement actuel

La page ngOnChanges() :

appelé avant ngOnInit() et chaque fois qu'une ou plusieurs propriétés d'entrée liées aux données changent

et ceci environ ngOnInit() :

appelé [...] après le premier ngOnChanges()

Il n'est pas clair d'après cette description que ngOnChanges() ne sera _pas_ appelé si le composant est utilisé _sans_ fournir d'entrées.

Comportement attendu

La documentation devrait être plus claire sur le comportement de ngOnChanges() : en particulier, si un composant a des entrées déclarées mais qu'elles ne sont pas utilisées, alors ngOnChanges() ne sera _pas_ appelé avant ngOnInit()

Reproduction minimale du problème avec des instructions

https://stackblitz.com/edit/angular-ngonchanges

Quelle est la motivation / le cas d'utilisation pour changer le comportement ?

À en juger par la documentation, on peut avoir l'impression que ngOnChanges() sera toujours appelé en premier avant ngOnInit() pour un composant avec des entrées, même si ces entrées ne sont pas utilisées par le modèle/composant parent.

Cela peut conduire à des erreurs accidentelles pas si évidentes, telles que la suppression de ngOnInit() s'il duplique la logique de démarrage d'un composant de ngOnChanges() .

docs feature medium

Commentaire le plus utile

Cela m'a aussi pris au dépourvu.

La documentation donne vraiment l'impression que ngOnChanges est une exigence du déclenchement de ngOnInit, cela ne précise pas non plus que ngOnChanges peut ne pas se déclencher du tout si aucune donnée n'est liée. Alors qu'en réalité, il s'agit simplement de décrire l'ordre dans lequel ils sont appelés, pas qu'ils soient liés les uns aux autres, déclenchés ou non.

Ce serait bien que cela soit éclairci.

>Tous les commentaires

Cela m'a aussi pris au dépourvu.

La documentation donne vraiment l'impression que ngOnChanges est une exigence du déclenchement de ngOnInit, cela ne précise pas non plus que ngOnChanges peut ne pas se déclencher du tout si aucune donnée n'est liée. Alors qu'en réalité, il s'agit simplement de décrire l'ordre dans lequel ils sont appelés, pas qu'ils soient liés les uns aux autres, déclenchés ou non.

Ce serait bien que cela soit éclairci.

Cette page vous a été utile?
0 / 5 - 0 notes