Winkel 2 Überprüfen Sie, ob query-parameter in der url vorhanden ist
Ich brauche, um zu überprüfen, ob die aktuelle url-query-string.
url
http://localhost:4200/test?id=55555
oder
http://localhost:4200/test
Habe ich verwendet
this.route.queryParams
.filter(params => 'id' in params)
.map(params => params.id)
.distinctUntilChanged()
.subscribe(
id=> {
//check lead Id here
console.log(id);
}
);
Aber das funktioniert nur, wenn es die id in der url. Nicht sicher, wie Sie Sie, zu überprüfen, ob es existiert.
InformationsquelleAutor rishal | 2017-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde sagen mit:
ausreichen würde.
Vergessen Sie nicht initialisiert
private route: ActivatedRoute
im Konstruktor undimport { ActivatedRoute } from '@angular/router';
Da Sie nur brauchen, um zu überprüfen, ob es existiert oder nicht. Wenn es nicht deine Sachen auftreten würden, wie das hinzufügen eines boolean zu prüfen, ob es eingestellt wurde oder nicht. Wenn es nicht existiert, dann kann auch nichts passieren würde. Wenn dann müssen Sie etwas tun, irgendwo anders in der Komponente, die Sie überprüfen könnten, die boolean später, wenn es war wahr/falsch, je nach dem, wie man es früher.
this.route.snapshot.queryParamsMap.get('id')
InformationsquelleAutor Mukyuu
Können Sie direkt überprüfen Sie es in Ihrem abonnieren-Funktion, wie unten :
id not found in params
dann wird der Wert vonid
.Sie können
if( params.hasOwnPrperty('id') )
oderif( Object.keys(params).indexOf('id') !== -1 )
stattif(params['id'])
InformationsquelleAutor ranakrunal9
dies ist der einfache Weg :
InformationsquelleAutor Amin Adel
Vorläufige
Wenn man abonniert, queryParams, wie unten, die variable params enthält ein Objekt, wo die Schlüssel sind alle der Abfrage-Parameter und der Wert kann entweder ein einzelner Wert oder ein array von Werten. Man kann
console.log(params);
zu überprüfen, das Ergebnis. Zum Beispiel:wenn die url ist: http://example.com/?lion=10&Löwe=15&cat=20
und dann versuchen wir zu sehen, was params hält:
das Ergebnis wäre ein Objekt, wo die Schlüssel sind
lion
undcat
aber Werte werden in einem array für die Löwen, da hat es zwei vorkommen und für die Katze ist ein einzelner Wert:Nun die Beantwortung der Frage,
Nehmen wir mal die url: http://example.com/?id&name=james
Kann man feststellen, dass es keinen Wert für id. Es ist möglich, dass eine url genau einen Schlüssel hat aber keinen Wert, und doch möchten wir wissen, dass der Schlüssel mindestens vorhanden ist. Wenn wir das zu tun:
diese Bedingung wird false zurückgegeben, obwohl die Schlüssel-id vorhanden ist. Könnten wir wirklich etwas tun wollen, wenn der Schlüssel allein ist vorhanden, und etwas anderes, wenn der Schlüssel und Wert vorhanden sind. In diesem Fall können wir nutzen, lodash Bibliothek effektiv zu Sortieren Schlüssel und Schlüssel/Wert-Ergebnisse. Nach dem Import lodash Bibliothek in das Projekt. Man kann _.hat um dies zu tun:
Natürlich der obige code wird davon ausgegangen, dass die id-Taste erscheint nur einmal in der url-params. Ansonsten müsste man eine Schleife durch ein array und überprüfen Sie jeden Wert.
InformationsquelleAutor Sriram Ranganathan
Ich nehme an, Sie verwenden die Angular-Routing-System hier. Dann injizieren Sie die aktuellen aktivierten route im Konstruktor der Komponente wie folgt:
Dann prüfen Sie also Ihre ngOnInit() etwa so:
InformationsquelleAutor Rainer Feike
Da niemand erwähnt die Verwendung von
snapshot
ich bin Angabe meine Antwort. Wenn Sie nicht wirklich brauchen eine beobachtbare, d.h. die url wird geändert, sobald e.g Benutzer navigiert zu "Seite Bearbeiten") können Sie die Vorteile der Snapshot-alternative, die ist viel kürzer. So, in Ihrer app, die Sie tun könnten:Aber nehmen Sie in mind dieser Stelle:
Quelle: Snapshot: die nicht-beobachtbaren alternative
InformationsquelleAutor jpgrassi