Menggabungkan Parameter Jalur Sudut?

Oct 07 2020

Aplikasi Angular Material Docs menggabungkan parameter jalur seperti ini:

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

Berikut contohnya: https://github.com/angular/material.angular.io/blob/master/src/app/pages/component-category-list/component-category-list.ts

Namun ini menghasilkan kesalahan:

@deprecated - resultSelector tidak lagi didukung, gunakan pipa untuk memetakan

Jadi untuk menyiasati itu dimungkinkan untuk melakukan ini:

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

Seperti yang didokumentasikan di sini: penggabungan pemfaktoran ulang terbaru untuk @deprecated - resultSelector tidak lagi didukung, gunakan pipa untuk memetakan?

Namun yang menghasilkan kesalahan ini:

ERROR TypeError: Tidak dapat membaca properti 'nama' yang tidak ditentukan di SafeSubscriber._next (component-category-list.ts: 50) di SafeSubscriber .__ tryOrUnsub (Subscriber.js: 183) di SafeSubscriber.next (Subscriber.js: 122) di Subscriber ._next (Subscriber.js: 72) di Subscriber.next (Subscriber.js: 49) di MapSubscriber._next (map.js: 35) di MapSubscriber.next (Subscriber.js: 49) di CombineLatestSubscriber.notifyNext (gabungkanLatest.js : 73) di InnerSubscriber._next (InnerSubscriber.js: 11) di InnerSubscriber.next (Subscriber.js: 49) di BehaviorSubject._subscribe (BehaviorSubject.js: 14) di BehaviorSubject._trySubscribe (Observable.js: 42) di BehaviorSubject. _trySubscribe (Subject.js: 81) di BehaviorSubject.subscribe (Observable.js: 28) di subscribeToResult (subscribeToResult.js: 9)

Jadi, tampaknya sectionparameter URL yang dicari komponen tidak lagi diambil setelah pemfaktoran ulang. Pikiran?

Jawaban

Ole Oct 09 2020 at 11:23

Parameter harus dihancurkan saat meneruskan ke Object.assignseperti ini:


    // 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)));