Die CanActivate
class ermöglicht eine Observable<boolean>
Rückgabetyp.Warum gibt CanActivate von Angular 2 ein Observable <boolean> statt einer Versprechung zurück?
Die einzigen Anwendungsfälle, die Sinn für mich sind:
CanActivate
könnte ‚asynchron‘ blockieren eine Route angezeigt wird, bisobserver.next(true|false)
genannt wird.- Ich könnte eine Route anzeigen, die
CanActivate
ermöglicht dann drücken Sie eineobserver.next(false)
von einem anderen Teil meiner App und haben diese Route verschwinden.
Punkt eins funktioniert aber nicht Punkt zwei. Daher kann ich keinen Grund finden, warum CanActivate
einen Rückgabetyp von Observable<boolean>
anderen als Komfort zulassen sollte - was wiederum die API kompliziert. Es wäre sauberer, wenn CanActivate
nur eine boolean
Rückgabetyp und Promise
erlaubt.
Bitte beachten Sie, dass ich Angular, RxJS und alles Node neu bin, damit ich das Offensichtliche vermisse. Ich habe eine Weile damit verbracht, die Funktionalität aus CanActivate
zu extrahieren, die der Rückgabetyp Observer<boolean>
impliziert.
Es ist ihre Entscheidung, keine Promises zu verwenden und sie durch Observables zu ersetzen. Sie können sicherlich eine Observable haben, die nur einen einzigen Wert vor dem Abschluss zurückgibt, alle http Aufrufe sind jetzt zum Beispiel Versprechungen. –
Warum fragen Sie nicht die Entwickler, die den Router gebaut haben, auf dem der v3 Router basierte? [Erstellen Sie ein Problem] (https://github.com/ngrx/router/issues), stellen Sie die Frage und Sie erhalten wahrscheinlich eine Antwort. – cartant
Ok wird es tun. War mir nicht sicher, ob das eine dumme Frage war. – Dan