web-dev-qa-db-fra.com

Qu'est-ce que le multi fournisseur dans angular2

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 })
24
blackHawk

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.

28
Günter Zöchbauer

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})
]);

Détails

5
Arpit Agarwal

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.

Source

1
muetzerich