การรวมพารามิเตอร์ Angular Path?

Oct 07 2020

แอปพลิเคชัน Angular Material Docs รวมพารามิเตอร์พา ธ ไว้ดังนี้:

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

นี่คือตัวอย่าง: https://github.com/angular/material.angular.io/blob/master/src/app/pages/component-category-list/component-category-list.ts

อย่างไรก็ตามสิ่งนี้ก่อให้เกิดข้อผิดพลาด:

@deprecated - ไม่มีการสนับสนุน resultSelector อีกต่อไปให้ไปที่แผนที่แทน

เพื่อหลีกเลี่ยงสิ่งที่เป็นไปได้ที่จะทำสิ่งนี้:

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

ตามที่บันทึกไว้ที่นี่: combinationLatest refactoring สำหรับ @deprecated - resultSelector ไม่ได้รับการสนับสนุนอีกต่อไปไปที่แผนที่แทน?

อย่างไรก็ตามสิ่งนั้นก่อให้เกิดข้อผิดพลาดนี้:

ข้อผิดพลาดประเภทข้อผิดพลาด: ไม่สามารถอ่านคุณสมบัติ 'ชื่อ' ของที่ไม่ได้กำหนดใน SafeSubscriber._next (component-category-list.ts: 50) ที่ SafeSubscriber .__ tryOrUnsub (Subscriber.js: 183) ที่ SafeSubscriber.next (Subscriber.js: 122) ที่สมาชิก ._next (Subscriber.js: 72) ที่ Subscriber.next (Subscriber.js: 49) ที่ MapSubscriber._next (map.js: 35) ที่ MapSubscriber.next (Subscriber.js: 49) ที่ CombineLatestSubscriber.notifyNext (combinationLatest.js : 73) ที่ InnerSubscriber._next (InnerSubscriber.js: 11) ที่ InnerSubscriber.next (Subscriber.js: 49) ที่ BehaviorSubject._subscribe (BehaviorSubject.js: 14) ที่ BehaviorSubject._trySubscribe (Observable.js: 42) ที่ BehaviorSubscribe _trySubscribe (Subject.js: 81) ที่ BehaviorSubject.subscribe (Observable.js: 28) ที่ subscribeToResult (subscribeToResult.js: 9)

ดังนั้นดูเหมือนว่าsectionพารามิเตอร์ URL ที่คอมโพเนนต์กำลังมองหาจะไม่ถูกจับอีกต่อไปหลังจากการปรับโครงสร้างใหม่ ความคิด?

คำตอบ

Ole Oct 09 2020 at 11:23

พารามิเตอร์จะต้องถูกทำลายเมื่อผ่านไปObject.assignเช่นนี้:


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