Winkelpfadparameter kombinieren?

Oct 07 2020

Die Anwendung Angular Material Docs kombiniert Pfadparameter wie folgt:

    // Combine params from all of the path into a single object.
    this.params = combineLatest(
        this._route.pathFromRoot.map(route => route.params), Object.assign);

Hier ist ein Beispiel: https://github.com/angular/material.angular.io/blob/master/src/app/pages/component-category-list/component-category-list.ts

Dies erzeugt jedoch den Fehler:

@deprecated - resultSelector wird nicht mehr unterstützt, stattdessen Pipe to Map

Um dies zu umgehen, ist dies möglich:

    this.params = combineLatest(
      this._route.pathFromRoot.map(route => route.params)
    ).pipe(
        map(Object.assign)
    );

Wie hier dokumentiert: CombineLatest Refactoring für @deprecated - resultSelector wird nicht mehr unterstützt, Pipe to Map stattdessen?

Dies führt jedoch zu diesem Fehler:

ERROR TypeError: Die Eigenschaft 'name' von undefined kann bei SafeSubscriber._next (Komponentenkategorienliste.ts: 50) bei SafeSubscriber nicht gelesen werden .__ tryOrUnsub (Subscriber.js: 183) bei SafeSubscriber.next (Subscriber.js: 122) bei Subscriber ._next (Subscriber.js: 72) bei Subscriber.next (Subscriber.js: 49) bei MapSubscriber._next (map.js: 35) bei MapSubscriber.next (Subscriber.js: 49) bei CombineLatestSubscriber.notifyNext (combinLatest.js : 73) bei InnerSubscriber._next (InnerSubscriber.js: 11) bei InnerSubscriber.next (Subscriber.js: 49) bei BehaviorSubject._subscribe (BehaviorSubject.js: 14) bei BehaviorSubject._trySubscribe (Observable.js: 42) bei BehaviorSubject. _trySubscribe (Subject.js: 81) bei BehaviorSubject.subscribe (Observable.js: 28) bei subscribeToResult (subscribeToResult.js: 9)

Es sieht also so aus, als würde der sectionURL-Parameter, nach dem die Komponente sucht, nach dem Refactoring nicht mehr erfasst. Gedanken?

Antworten

Ole Oct 09 2020 at 11:23

Die Parameter müssen beim Übergeben Object.assignwie folgt zerstört werden:


    // Combine params from all of the path into a single object.
    this.params = combineLatest(
      this._route.pathFromRoot.map(route => route.params)).
      pipe(map((params:Params[])=>Object.assign({}, ...params)));