2016-08-20 2 views
-1

fängt mit Winkel 2 paar Frage Ich habe geladen ist wieeinen Code ausgeführt, wann immer eine Komponente in Winkel 2 ähnlich zu 1 Winkel app.run

In einer Winkel i config in Routing eine Variable zu definieren verwendet und basierend auf dieser Variable habe ich einen Code in app.run() geschrieben, der überprüft, ob diese Variable wahr ist, sollte etwas passieren. SO was es tat, wenn jemals ein Router geändert wird, überprüft es diesen Zustand.

Was nun, wenn ich dasselbe in angularjs 2 erreichen möchte. haben wir nicht app.run() stattdessen haben wir Bootstrap und ist es möglich, benutzerdefinierte Variable in Router-Konfiguration zu definieren?

Ich habe versucht zu suchen, konnte aber keine Antwort für meine Frage finden. Bitte lassen Sie mich wissen, wenn eine Klärung bezüglich der Frage erforderlich ist, die ich gestellt habe.

Danke

Antwort

1

Wenn eine Komponente angular2 im Lebenszyklus OnInit geladen wird aufgerufen - wenn Sie etwas von benutzerdefinierten Konfiguration überprüfen möchten, sobald eine neue Komponente geladen wird Sie den Code in dort schreiben kann, so etwas wie:

import { Component, OnInit } from '@angular/core' 

@Component({ 
    ... 
}) 
export class MyComponent implements OnInit { 

    ngOnInit() { 
     // write the check for the config value in here 
    } 
} 

Das einzige, was Sie tun müssen, ist der Import je nachdem, was Datei hat Ihre benutzerdefinierte config in ihm und verwenden, das für jede Komponente innerhalb der ngOnInit Methode, die Sie definieren.

Eine andere Möglichkeit wäre, den Standortdienst zu abonnieren, der von angular exportiert wird, wobei die Prüfung jedes Mal ausgeführt wird, wenn sich die Standort-URL ändert. Um eine Wiederholung des Abonnements zu vermeiden, müssen Sie diesen Code in Ihre AppComponent-Hauptdatei einfügen. Die einzige andere Sache, die Sie tun müssten, ist ein globaler Dienst, den Sie in alle Ihre Komponenten importieren, der eine Art Flag enthält, die Ihnen sagen kann, ob Ihr Konfigurationswert auf einen bestimmten Wert eingestellt ist.

import { Component, OnInit } from '@angular/core' 
import { Location } from '@angular/common' 

... METADATA ... 

export class AppComponent implements OnInit { 

    constructor(private location: Location) {} 

    ngOnInit() { 
     this.location.subscribe((value) => { 
      // do check in here/set value inside global service 
     }); 
    } 
+0

Ohh ok ich habe genau das, was man eine Sitzung say.gr:- versuchen, zu überprüfen, i eine eigene Klasse erstellen und diese Klasse in jeder Komponente ngOnInit rufen zu überprüfen, ob Sitzung ist oder nicht. Basierend darauf kann ich tun, was ich will. Wenn ich falsch liege, lass es mich wissen. Danke, Kumpel – RKD