Detaillierte Erläuterung der Implementierung gemeinsam genutzter Module in Angular-Projekten

Detaillierte Erläuterung der Implementierung gemeinsam genutzter Module in Angular-Projekten

1. Gemeinsam genutztes CommonModule

Erstellen Sie ein Freigabemodell: ng gm share

Alle Module, die freigegeben werden müssen, werden nach dem Import exportiert.

Im Moment gibt es nur CommonModule, und es wird in Zukunft einige Komponenten geben, die gemeinsam genutzt werden müssen.

importiere { NgModule } von '@angular/core';
importiere { CommonModule } von '@angular/common';

@NgModule({
  Importe: [
    Gemeinsames Modul
  ],
  Exporte:
    Gemeinsames Modul
  ],
  Erklärungen: []
})
exportiere Klasse SharedModule { }

Importieren Sie das Kernmodul in das App-Modul.

importiere { BrowserModul } von '@angular/platform-browser';
importiere { NgModule } von '@angular/core';

importiere { AppComponent } aus './app.component';
importiere {CoreModule} aus „./core/core.module“;

@NgModule({
  Erklärungen: [
    AppComponent
  ],
  Importe: [
    BrowserModule,
    Kernmodul
  ],
  Anbieter: [],
  Bootstrap: [Anwendungskomponente]
})
exportiere Klasse AppModule { }

2. Gemeinsam genutztes Materialmodul

Zur einfacheren Verwaltung platzieren Sie den Import und Export von Materialkomponenten in einem separaten Modul und importieren und exportieren Sie sie in ShareModule.

importiere { NgModule } von '@angular/core';
importiere { CommonModule } von '@angular/common';
importiere { MatToolbarModule, MatSidenavModule, MatButtonModule, MatCardModule, MatInputModule, MatListModule, MatSlideToggleModule, MatGridListModule, MatDialogModule, MatAutocompleteModule, MatMenuModule, MatCheckboxModule, MatTooltipModule, MatDatepickerModule, MatRadioModule, MatNativeDateModule, MatSelectModule } aus '@angular/material';
importiere { MatIconModule } aus '@angular/material';

const Modul=[
  MatSidenavModule,
  MatIconModul,
  MatToolbarModule,
  MatIconModul,
  MatButtonModul,
  MatCardModul,
  MatInputModule,
  MatListModule,
  MatSlideToggleModule,
  MatGridListModule,
  MatDialogModul,
  MatAutocompleteModul,
  MatMenuModule,
  MatCheckboxModule,
  MatTooltipModul,
  MatDatepickerModul,
  MatRadioModule,
  MatNativeDateModule,
  MatSelectModule
];

@NgModule({
  Deklarationen: [],
  Importe: [
    Modul
  ],
  Exporte:
    Modul
  ]
})
exportiere Klasse MaterialModul { }
importiere { NgModule } von '@angular/core';
importiere { CommonModule } von '@angular/common';
importiere { MaterialModul } aus '../material/material.module';
importiere { ConfirmDialogComponent } aus './confirm-dialog/confirm-dialog.component';

@NgModule({
  Importe: [
    Gemeinsames Modul,
    MaterialModul
  ],
  Exporte:
    Gemeinsames Modul,
    MaterialModul
  ],
  Deklarationen: [ConfirmDialogComponent]
})
exportiere Klasse SharedModule { }

3. Gemeinsamer ConfirmDialog

Das Bestätigungsdialogfeld wird verwendet, unabhängig davon, ob Sie eine Aufgabe oder ein Projekt löschen, und wird daher im SharedModule platziert.

$ ng gc gemeinsam genutzter/Bestätigungsdialog

Sie können auch eine Inline-Vorlage und einen Stil mit ng gc shared/confirm-dialog -it -is erstellen.

<form>
  <h2 md-dialog-title>{{title}}</h2>
  <div mat-dialog-inhalt>
    {{Inhalt}}
  </div>
  <div mat-dialog-aktionen>
    <button type="button" mat-raised-button color="primary" (click)="onClick(true)">OK</button>
    <button type="button" mat-button mat-dialog-close (click)="onClick(false)">Abbrechen</button>
  </div>
</form>
importiere { Komponente, OnInit, Inject } von "@angular/core";
importiere { MatDialogRef } von "@angular/material";
importiere { MAT_DIALOG_DATA } aus "@angular/material";

@Komponente({
  Selektor: "App-Bestätigungsdialog",
  Vorlagen-URL: "./confirm-dialog.component.html",
  styleUrls: ["./confirm-dialog.component.scss"]
})
Exportklasse ConfirmDialogComponent implementiert OnInit {
  Titel = "";
  Inhalt = "";
  Konstruktor(
    private DialogRef: MatDialogRef<ConfirmDialogComponent>,
    @Inject(MAT_DIALOG_DATA) private Daten
  ) { }

  ngOnInit() {
    dieser.Titel = dieser.Daten.Titel;
    dieser.Inhalt = dieser.Daten.Inhalt;
  }
  beiKlick(Ergebnis: Boolesch) {
    this.dialogRef.close(Ergebnis);
  }
}

Fügen Sie dann die Komponente „ConfirmDialogComponent“ in „sharedModule“ ein.

importiere { NgModule } von "@angular/core";
importiere { CommonModule } von "@angular/common";
importiere { MaterialModul } aus "../material/material.module";
importiere { ConfirmDialogComponent } aus "./confirm-dialog/confirm-dialog.component";

@NgModule({
  Importe: [GemeinsamesModul, MaterialModul],
  Exporte: [GemeinsamesModul, MaterialModul],
  Deklarationen: [ConfirmDialogComponent],
  Eintragskomponenten: [ConfirmDialogComponent]
})
exportiere Klasse SharedModule { }

Wenn Sie ConfirmDialog verwenden, lesen Sie Löschen eines Projekts.

Oben finden Sie eine ausführliche Erläuterung der Implementierung gemeinsam genutzter Module in Angular-Projekten. Weitere Informationen zu Angular finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Angular2-Module und gemeinsam genutzten Module
  • Detaillierte Erläuterung der Angular-Strukturdirektivenmodule und -Stile
  • Angular-Build-Prozess für Multimodulprojekte
  • Spezifische Verwendung des Angular2 NgModel-Moduls
  • Beispiel für die Implementierung des Vorladens verzögerter Module durch Angular
  • Detaillierte Erklärung zum Lazy Loading von Angular-Modulen mittels Routing
  • Eine kurze Erläuterung der Lazy-Loading-Methode von Angular2-Modulen

<<:  Zusammenfassung der Lastausgleichsmethoden von Nginx

>>:  Tutorial zur Oracle-Bereitstellung in einer Linux-Umgebung

Artikel empfehlen

Neunundvierzig JavaScript-Tipps und Tricks

Inhaltsverzeichnis 1. Betrieb von js Integer 2. S...

Über die „Berufskrankheit“ der Designer

Ich habe immer das Gefühl, dass Designer die sens...

JavaScript zum Erzielen eines Mauszieheffekts

In diesem Artikel wird der spezifische JavaScript...

Das Vue-CLI-Framework implementiert eine Timer-Anwendung

Technischer Hintergrund Diese Anwendung verwendet...

CSS realisiert den Maskeneffekt, wenn die Maus über das Bild bewegt wird

1. Setzen Sie den HTML-Code der Maskenebene und d...

So sichern Sie MySQL unter Linux automatisch remote

Vorwort: Ganz gleich, ob wir es für den Eigengebr...

Lösung für MySQL 8.0 kann nicht gestartet werden 3534

Der MySQL 8.0-Dienst kann nicht gestartet werden ...

Die Rolle von nextTick in Vue und mehrere einfache Anwendungsszenarien

Zweck Verstehen Sie die Rolle von nextTick und me...

Vue verwendet Drag & Drop, um einen Strukturbaum zu erstellen

In diesem Artikelbeispiel wird der spezifische Co...

Installieren Sie Ubuntu 18 ohne USB-Laufwerk unter Windows 10 mit EasyUEFI

1. BIOS überprüfen Überprüfen Sie zunächst, in we...

Detaillierte Erklärung zum MySQL-Dateispeicher

Was ist ein Dateisystem Wir wissen, dass Speicher...