2017-09-22 28 views
7

Tôi muốn in sơ đồ trang web trực quan của ứng dụng và muốn sử dụng bộ định tuyến cho điều đó. Tôi biết các tuyến đường hiện tại có thể được truy cập thông qua router.config nhưIn cây tuyến đường ở góc 2

this.router.config.forEach(route => { 

nhưng tôi không thể tìm được giải pháp để tải trẻ em lười biếng. Khi tôi sử dụng addon trình duyệt Augury, tôi có thể thấy toàn bộ bản đồ trong thời gian không. Bất kỳ đề xuất?

+0

Tôi nghĩ rằng bạn không thể tải tuyến đường của các mô-đun tải ... –

+0

Đó là những gì tôi nghĩ trước khi tôi thấy rằng cây tuyến đường in trong Augury :-) – Gatekeeper

+0

Tôi nghĩ rằng «Augury' bằng cách nào đó tải các mô-đun lười biếng tải: - | –

Trả lời

1

Augury cũng không hiển thị các tuyến cho đến khi bạn tải các mô-đun được nạp lười, bạn có thể kiểm tra bằng cách đi tới route example app và nhìn thấy Cây định tuyến, bạn sẽ không tìm thấy tuyến quản trị.

enter image description here

Có nói rằng, Nếu bạn muốn kiểm tra cấu hình sau mô-đun lười nạp đã được nạp, bạn có thể sử dụng dưới đây,

this.router.events.filter(e => e instanceof RouteConfigLoadEnd).subscribe(e => { 
    console.log(this.router.config); 
}); 

RouteConfigLoadEnd Đại diện cho một sự kiện kích hoạt khi một tuyến đường đã được tải chậm.

bạn sẽ tìm thấy thuộc tính có tên _loadedConfig trong tuyến đường mô-đun lười biếng của mình sau khi cấu hình được cập nhật, cấu hình sẽ có cấu hình.

enter image description here

Kiểm tra Plunker này !!, nhìn vào app.component.ts, tôi đã thêm trên mã trong AppComponent constructor.

Out of curosity, tôi đang tìm kiếm vào mã điềm như thế nào họ cập nhật Router Tree, tôi thấy dưới đây,

Trong backend.ts, có một mã để đăng ký trên ngZone.onStable

thông báo khi người cuối cùng onMicrotaskEmpty đã chạy và không còn nữa microtasks

Trong đăng ký, nó được kiểm tra nếu tuyến đường đã được thay đổi hay không, nếu thay đổi thì tuyến đường được phân tích cú pháp và cây Router được cập nhật,

đoạn như sau từ parse-modules.ts,

export const parseModulesFromRouter = (router, existingModules: NgModulesRegistry) => { 
    const foundModules = []; 

    const _parse = (config) => { 
    config.forEach(route => { 
     if (route._loadedConfig) { 
     foundModules.push(route._loadedConfig.module ? 
      route._loadedConfig.module.instance : 
      route._loadedConfig.injector.instance); 
     _parse(route._loadedConfig.routes || []); 
     } 
     _parse(route.children || []); 
    }); 
    }; 
...... 
...... 

Hope this helps !!

Các vấn đề liên quan