1. Strukturelle Anweisungen* ist eine Syntaxvereinfachung, <a *ngIf="user.login">logout</a> ist gleichbedeutend mit <ng-template [ngIf]="Benutzer.login"> <a>Beenden</a> </ng-Vorlage> Vermeiden Sie das Schreiben von ng-template. <ng-template [ngIf]="Artikel.Erinnerung"> <Mat-Symbol> Alarm </mat-Symbol> </ng-Vorlage> <!-- <mat-icon *ngIf="item.reminder"> Alarm </mat-icon> --> Warum können Strukturanweisungen die Struktur verändern? ngIf-Quellcode Die Set-Methode wird als @Input markiert. Wenn die Bedingung erfüllt ist und keine Ansicht vorhanden ist, wird das interne Flag hasView auf true gesetzt und eine untergeordnete Ansicht gemäß der Vorlage über viewContainer erstellt. Wenn die Bedingung nicht erfüllt ist, wird der Inhalt des Ansichtscontainers gelöscht. viewContainerRef: Container, der Container der Ansicht, in der sich die Anweisung befindet ModulWas ist ein Modul? Eine Sammlung von Dateien mit unabhängigen Funktionen, die zum Organisieren von Dateien verwendet wird. Modul-Metadaten entryComponents: Werden sofort beim Eintritt in das Modul (z. B. ein Dialogfeld) geladen und nicht erst beim Aufruf. Exporte: Wenn Sie die internen Inhalte des Moduls öffentlich machen möchten, müssen Sie diese exportieren. Was ist forRoot()? Importe: [RouterModule.forRoot(Routen)], Importe: [RouterModule.forChild(route)]; Tatsächlich sind forRoot und forChild zwei statische Factory-Methoden. Konstruktor (Wächter: beliebig, Router: Router); /** * Erstellt ein Modul mit allen Router-Providern und -Direktiven. Es richtet optional auch ein * Anwendungslistener zur Durchführung einer ersten Navigation. * * Optionen (siehe „ExtraOptions“): * * „enableTracing“ bewirkt, dass der Router alle seine internen Ereignisse in der Konsole protokolliert. * * `useHash` aktiviert die Standortstrategie, die das URL-Fragment anstelle des Verlaufs verwendet * API. * * „initialNavigation“ deaktiviert die anfängliche Navigation. * * „errorHandler“ bietet einen benutzerdefinierten Fehlerhandler. * * „preloadingStrategy“ konfiguriert eine Vorladestrategie (siehe „PreloadAllModules“). * * `onSameUrlNavigation` konfiguriert, wie der Router die Navigation zur aktuellen URL handhabt. Siehe * „ExtraOptions“ für weitere Einzelheiten. * * `paramsInheritanceStrategy` definiert, wie der Router Parameter, Daten und aufgelöste Daten zusammenführt * von übergeordneten zu untergeordneten Routen. */ statisch für Root (Routen: Routen, Konfiguration?: ExtraOptionen): ModuleWithProviders<RouterModule>; /** * Erstellt ein Modul mit allen Router-Direktiven und einem Provider, der Routen registriert. */ statisch für Kind (Routen: Routen): ModuleWithProviders<RouterModul>; } Die Metadaten ändern sich je nach Situation. Es gibt keine Möglichkeit, Metadaten dynamisch anzugeben. Schreiben Sie keine Metadaten. Erstellen Sie direkt eine statische Engineering-Methode und geben Sie ein Modul zurück. Schreiben Sie ein forRoot()Erstellen Sie ein Servicemodul:$ ng gm services importiere { NgModule } von '@angular/core'; importiere { CommonModule } von '@angular/common'; @NgModule({ Deklarationen: [], Importe: [ Gemeinsames Modul ] }) exportiere Klasse ServicesModule { } Die Metadaten im ServiceModul werden nicht mehr benötigt. Wird von einer statischen Methode für Root zurückgegeben. importiere { NgModule, ModuleWithProviders } von '@angular/core'; importiere { CommonModule } von '@angular/common'; @NgModule() exportiere Klasse ServicesModule { statisch fürRoot():ModuleMitProvidern{ zurückkehren { ngModule: DiensteModul, Anbieter:[] } } } Beim Importieren in das Kernmodul verwenden Importe: [ServicesModule.forRoot();] 3. StildefinitionngClass, ngStyle und [class.yourclass] ngClass: Wird verwendet, um unter bestimmten Bedingungen dynamisch Stilklassen anzugeben. Es eignet sich für Situationen, in denen eine große Anzahl von Stiländerungen vorgenommen wird. Vordefinierte Klassen. <mat-list-item class="container" [@item]="widerPriority" [ngClass]="{ 'Priorität-normal':Element.Priorität===3, 'Priorität wichtig':item.priority===2, „Notfallpriorität“:item.priority===1 }" ngStyle: Wird verwendet, um Stile unter bestimmten Bedingungen dynamisch anzugeben, geeignet für Situationen mit kleinen Änderungen. Beispielsweise im folgenden Beispiel [ngStyle]="{'order':list.order}". Schlüssel ist eine Zeichenfolge. [class.yourclass]: [class.yourclass] = „Bedingung“ entspricht direkt einer Bedingung. Diese Voraussetzung ist erfüllt, damit diese Klasse angewendet werden kann. Es entspricht der Schreibweise von ngClass, was einer Variante und Abkürzung von ngClass entspricht. <div Klasse = "Inhalt" mat-line [Klasse.abgeschlossen] = "Element.abgeschlossen"> <span [matTooltip]="item.desc">{{item.desc}}</span> </div> Verwenden Sie ngStyle, um die Reihenfolge beim Ziehen anzupassenDas Prinzip besteht darin, die Reihenfolge des Flex-Container-Stils dynamisch als Reihenfolge im Listenmodellobjekt anzugeben. 1. Reihenfolge zur App-Aufgabenliste in TaskHome hinzufügen Der Listencontainer ist ein flexibler Container und seine Anordnungsreihenfolge wird entsprechend der Reihenfolge sortiert. <app-task-list *ngFor="Liste der Listen veröffentlichen" Klasse="Listencontainer" app-droppable="true" [dropTags]="['Aufgabenelement','Aufgabenliste']" [dragEnterClass]="'ziehen-eingeben'" [app-draggable]="wahr" [dragTag]="'Aufgabenliste'" [draggedClass]="'ziehen-starten'" [dragData]="Liste" (gelöscht)="handleMove($event,list)" [ngStyle]="{'Reihenfolge': Liste.Reihenfolge}" > 2. Die Listendatenstruktur muss geordnet sein. Fügen Sie daher das Attribut order hinzu. Listen = [ { ID: 1, Name: "Aufgaben", Bestellung: 1, Aufgaben: { ID: 1, desc: "Aufgabe 1: Gehe zu Starbucks, um Kaffee zu kaufen", abgeschlossen: wahr, Priorität: 3, Eigentümer: ID: 1, Name: "Zhang San", Avatar: „avatars:svg-11“ }, Fälligkeitsdatum: neues Datum(), Erinnerung: neues Datum() }, { ID: 2, desc: „Aufgabe 1: Erledigen Sie die vom Chef zugewiesene PPT-Aufgabe“, abgeschlossen: falsch, Priorität: 2, Eigentümer: ID: 2, Name: "Li Si", Avatar: „avatare:svg-12“ }, Fälligkeitsdatum: neues Datum() } ] }, { ID: 2, Name: "In Bearbeitung", Bestellung:2, Aufgaben: { ID: 1, desc: "Aufgabe 3: Überprüfung des Projektcodes", abgeschlossen: falsch, Priorität: 1, Eigentümer: ID: 1, Name: "Wang Wu", Avatar: „avatare:svg-13“ }, Fälligkeitsdatum: neues Datum() }, { ID: 2, desc: "Aufgabe 1: Einen Projektplan entwickeln", abgeschlossen: falsch, Priorität: 2, Eigentümer: ID: 2, Name: "Li Si", Avatar: „avatare:svg-12“ }, Fälligkeitsdatum: neues Datum() } ] } ]; 3. Ändern Sie die Reihenfolge, wenn Sie die Liste ziehen, um die Reihenfolge zu ändern Vertauschen Sie die Reihenfolge der beiden Quelllisten und der Zielliste handleMove(Quellendaten,Zielliste){ Schalter (srcData.tag) { Fall ‚Aufgabenelement‘: console.log('Element wird behandelt'); brechen; Fall „Aufgabenliste“: console.log('Liste behandeln'); const srcList = srcData.data; const tempOrder = srcList.order; srcList.order = zielList.order; Zielliste.Reihenfolge = temporäre Reihenfolge; Standard: brechen; } } Oben finden Sie eine ausführliche Erläuterung der Angular-Strukturdirektivmodule und -Stile. Weitere Informationen zu Angular-Strukturdirektivmodulen und -Stilen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung zur Verwendung von Docker zum Erstellen von extern zugänglichem MySQL
>>: Detailliertes Tutorial-Diagramm zur Installation der dekomprimierten Version von MySQL5.7.21
Installationsumgebung Windows 10 VMware Workstati...
Vorwort Die Verwendung von CSS zum Generieren gep...
dl: Definitionsliste Definitionsliste dt: Definiti...
Inhaltsverzeichnis Zunächst müssen Sie wissen, da...
Lernpläne werden leicht unterbrochen und es ist s...
Inhaltsverzeichnis 1. Was ist Curry 2. Verwendung...
In diesem Artikel wird der spezifische Code von V...
Ich bin kürzlich auf einen Fehler gestoßen, als i...
Inhaltsverzeichnis Pagoda installieren Konfigurie...
Dieser Artikel fasst die Implementierungsmethoden...
Im System werden viele Befehle verwendet. Wie kön...
Schlossklassifizierung: Aus der Granularität der ...
Inhaltsverzeichnis Portale Fehlergrenzenbehandlun...
Inhaltsverzeichnis Zuerst müssen wir das Seitenla...
Dieser Artikel beschreibt, wie MySQL 5.7 aus dem ...