2016-06-12 6 views
0

In meinem Angular 2-Projekt habe ich eine benutzerdefinierte Funktion goToObject(objectType:string, objectID: number), die ich zu verschiedenen Objekten in ein paar verschiedenen Komponenten in meiner Anwendung navigieren. Die Funktion sieht wie folgt aus:So stellen Sie eine Router-Navigationsfunktion in Angular 2-Projekt zur Verfügung

goToObject(objectType:string, objectID: number) { 
    this._router.navigate([type, id]); 
} 

Ich habe mich gefragt, ob es einen Weg gibt, diese Funktion in meinem kompletten Projekt zur Verfügung zu stellen, ohne sie separat in jeder Komponente definieren zu müssen. Was es schwieriger macht Ich denke, dass diese Funktion eine Instanz eines Router-Objekts verwenden muss. Muss ich versuchen, es in meiner Basiskomponente bereitzustellen?

Antwort

0

können Sie einen gemeinsamen Dienst nutzen

@Injectable() 
export class RouteServices { 
    constructor(private _router:Router) {} 
    navigate(...) { 
    this._router.navigate([type, id]); 
    } 
} 

es dann an der Wurzel Komponente zur Verfügung stellen und es injizieren, wo Sie es verwenden möchten, und seine Methoden aufrufen.

+0

Das Injizieren müsste im Konstruktor jeder Komponente geschehen, in der ich es verwende, oder nicht? – hY8vVpf3tyR57Xib

+0

Genau. . . . –