multi: true
bedeutet, dass ein Anbieter-Token ein Array von Elementen bereitstellt. Beispielsweise werden alle Anweisungen für die Router-Unterstützung routerLink
, router-outlet
von ROUTER_DIRECTIVES
bereitgestellt.
Wenn ein neuer Provider mit dem Token ROUTER_DIRECTIVES
registriert wird, überschreibt er die zuvor registrierten Anweisungen. Wenn multi: true
(auf dem ersten registrierten und der neue Provider) festgelegt ist, werden die neuen Direktiven zu den zuvor registrierten Direktiven hinzugefügt, anstatt sie zu überschreiben.
Wenn ROUTER_DIRECTIVES
injiziert wird ( constructor(@Inject(ROUTER_DIRECTIVES) directives) {}
) wird ein Array von Direktiveninstanzen eingefügt. Normalerweise ist es nicht sinnvoll, ROUTER_DIRECTIVES
zu injizieren. Ich habe es nur als Beispiel verwendet, weil es multi: true
ist.
Die Verwendung von multi: true
sagt Angular, dass der Provider ein Multi-Provider ist. Wie bereits erwähnt, können wir bei mehreren Anbietern mehrere Werte für ein einzelnes Token in DI bereitstellen.
Nutzungen:
Wenn wir einige Direktiven haben, die automatisch in unserer gesamten Anwendung verfügbar sein sollten, ohne dass sie in den Komponenten-Dekorationen definiert werden müssen, können wir die Vorteile mehrerer Anbieter nutzen und erweitern, was für PLATFORM_DIRECTIVES
injiziert wird.
und
%Vor%Aus der Dokumentation:
Erzeugt mehrere Provider, die demselben Token (einem Multi-Provider) entsprechen. Multi-Provider werden zum Erstellen von Pluggable-Diensten verwendet, wobei der System kommt mit einigen Standard-Providern, und der Benutzer kann registrieren zusätzliche Anbieter. Die Kombination der Standardanbieter und der zusätzliche Anbieter werden verwendet, um das Verhalten des Systems zu steuern.
Tags und Links angular angular2-services angular2-forms angular2-directives