Die Aussage, dass der Router-Dienst in einem Angular-Modul explizit bereitgestellt werden muss, um ihn in einer anderen Komponente über Dependency Injection (DI) zu verwenden, ist laut der vorliegenden Frage falsch.
In Angular wird der Router-Dienst automatisch bereitgestellt, wenn das RouterModule in Ihrer Anwendung importiert wird. Daher muss dieser Service nicht explizit in einem Modul bereitgestellt (provided) werden.
Stellen Sie sicher, dass das RouterModule in der @NgModule
Deklaration Ihres Hauptmoduls (oder jedes Moduls, das Routen verwendet) importiert wird, wie im folgenden Code-Snippet gezeigt:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
@NgModule({
imports: [ BrowserModule, RouterModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Sobald das RouterModule importiert ist, kann der Router-Dienst über DI in jeder Komponente der Anwendung verwendet werden, indem er im Konstruktor der Komponente injiziert wird, wie im folgenden Code-Snippet gezeigt:
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'my-component',
template: `
<button (click)="navigateToHome()">Go to home</button>
`,
})
export class MyComponent {
constructor(private router: Router) {}
navigateToHome() {
this.router.navigate(['/home']);
}
}
In diesem Beispiel wird der Router-Dienst im Konstruktor injiziert, und die Methode navigate
des Dienstes wird verwendet, um programmgesteuerte Navigation innerhalb der Anwendung zu ermöglichen.
Wichtig ist, dass Angular die Bereitstellung von Diensten mithilfe des DI-Systems automatisiert, um Code-Wiederverwendung und -Trennung zu fördern und die Code-Testbarkeit zu verbessern. Daher gibt es in der Regel keine Notwendigkeit, Dienste manuell bereitzustellen, es sei denn, Sie benötigen eine spezielle Konfiguration oder einen spezifischen Bereitstellungsmechanismus.