Ich habe ein Verhaltensthema erstellt, das ich verwende, um ein Symbol zum Laden eines Drehfelds in meiner Anwendung zu aktivieren.Angular 2 - Mehrere Parameter mit Verhaltensfach?
Service:
// Observe our loader status
public loaderStatus: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
/**
* Toggle the loading indicator status
* @param value
*/
displayLoader(value: boolean) {
this.loaderStatus.next(value);
}
Komponente:
this._massEmpService.displayLoader(true); // Toggle true/false
HTML:
<div *ngIf="objLoaderStatus" class="loader" align="center">
<img src="images/loading-bars.svg" alt="" />
</div>
Während dies funktioniert gut für Wenn ich diesen Spinner in mehreren Bereichen über meine Anwendung verwenden möchte, ist die Funktion zu breit und würde alle Spinner-Instanzen in der App auslösen, wenn mehrere Spinner auf derselben Seite vorhanden wären.
Meine Frage:
Ist es möglich, ein Objekt oder mehrere params zu einem Verhalten unterliegt geben, so dass ich nicht nur steuern, ich kann passieren kann den enabled/disabled
Status, sondern auch ein Element ID eines bestimmten Typs so die Spinner möchte ich zeigen.
Beispiel Ziel:
<div *ngIf="objLoaderStatus && spinnerID == 'home'" class="loader" align="center">
<img src="images/loading-bars.svg" alt="" />
</div>
<div *ngIf="objLoaderStatus && spinnerID == 'search'" class="loader" align="center">
<img src="images/loading-bars.svg" alt="" />
</div>
Function Call:
this._massEmpService.displayLoader(true, 'search');
Was ist der beste Weg, dies zu tun zu gehen? Muss ich ein zweites Verhaltensthema machen, nur um die elementID
des Spinners zu halten, die ich referenzieren möchte?
Vielen Dank für die Antwort. Ich verstehe nicht, wie das anders ist als das, was ich habe. Sie haben eine Komponente, die Abschnitte auf ihrer Seite umschließt. Diese Komponente erhält eine Prop, die es aktiviert/deaktiviert, was ich im Wesentlichen mit einer Eigenschaft mache und 'ngIf' verwende. Der Teil, der mich verwirrt, ist, wie man spezifisch sagt, welche ich umschalten möchte, wenn ich mit mehreren Instanzen von Ladespinnereien klarkomme. – SBB
@SBB, es ist eher eine Trennung von Interesse. Service hat eine globale Reichweite. Solange Sie den Spinner für die ganze Seite verwenden, ist es großartig. Wenn Sie mehrere Komponenten mit Spinner für jede von ihnen haben, wäre eine strukturelle Anweisung sinnvoll. Es wird automatisch ausgeblendet/zerstört, wenn die Komponente, auf der es angewendet wird, ausgeblendet ist. Das ElementRef in der Direktive gibt das Element an, auf das es angewendet wurde. So können Sie bei Bedarf alle dom-Eigenschaften des Elements abrufen. Sie können die Bedingung übergeben, um spinner als Eingabe für die Anweisung anzuzeigen. Ich werde versuchen, meine Antwort mit z. B. –
zu aktualisieren. Es klingt, als könnte es meine Situation passen, nur hatte es eine harte Zeit, das von den verlinkten Seiten zu sammeln. Wenn die Zeit es erlaubt und Sie ein besseres Beispiel haben, würde ich es gerne hören und dies als meine einmal implementierte Lösung akzeptieren. – SBB