Je comprends que le fournisseur est destiné à obtenir le service d'une autre classe, mais qu'est-ce que le multi-fournisseur et le token?
Et aussi quand nous faisons multi=true
?
provide(NG_VALIDATORS, { useExisting: class), multi: true })
multi: true
Signifie qu'un jeton de fournisseur fournit un tableau d'éléments. Par exemple, toutes les directives pour la prise en charge du routeur routerLink
, router-outlet
Sont fournies par ROUTER_DIRECTIVES
.
Si un nouveau fournisseur est enregistré avec le jeton ROUTER_DIRECTIVES
, Il remplace les directives précédemment enregistrées. Si multi: true
(Sur le premier enregistré et le nouveau fournisseur) est défini, les nouvelles directives sont ajoutées aux directives précédemment enregistrées au lieu de remplacer.
Lorsque ROUTER_DIRECTIVES
Est injecté (constructor(@Inject(ROUTER_DIRECTIVES) directives) {}
) un tableau d'instances de directive est injecté. Il n'est généralement pas logique d'injecter ROUTER_DIRECTIVES
. Je l'ai utilisé juste comme exemple car c'est multi: true
.
En utilisant multi: true
indique Angular que le fournisseur est un fournisseur multiple. Comme mentionné précédemment, avec les fournisseurs multiples, nous pouvons fournir plusieurs valeurs pour un seul jeton dans DI.
Utilisations:
Si nous avons quelques directives qui devraient être automatiquement disponibles dans toute notre application sans que personne n'ait à les définir dans les décorations des composants, nous pouvons le faire en tirant parti de plusieurs fournisseurs et en étendant ce qui est injecté pour PLATFORM_DIRECTIVES
.
@Directive(...)
class Draggable { }
@Directive(...)
class Morphable { }
@Component(...)
class RootCmp { }
et
// at bootstrap
bootstrap(RooCmp, [
provide(PLATFORM_DIRECTIVES, {useValue: Draggable, multi: true}),
provide(PLATFORM_DIRECTIVES, {useValue: Morphable, multi: true})
]);
De la documentation:
Crée plusieurs fournisseurs correspondant au même jeton (un multi-fournisseur). Les fournisseurs multiples sont utilisés pour créer un service enfichable, où le système est livré avec certains fournisseurs par défaut, et l'utilisateur peut enregistrer des fournisseurs supplémentaires. La combinaison des fournisseurs par défaut et des fournisseurs supplémentaires sera utilisée pour piloter le comportement du système.