Khám phá
Trả lời
Hỏi
Đăng nhập

Làm thế nào để phát hiện thay đổi định tuyến (route) trong Angular 2?

Tôi đang tìm cách để phát hiện thay đổi route trong file App.ts của tôi.

Một khi tìm ra được, tôi sẽ kiểm tra global user token để xem liệu người dùng có được đăng nhập. Sau đó, tôi có thể chuyển hướng (redirect) người dùng nếu họ không được đăng nhập.

  1. Bạn sẽ nhìn thấy những mũi tên trong mỗi trang câu hỏi. Chúng cho phép bạn bỏ phiếu thuận / bỏ phiếu chống theo sự liên quan của các câu hỏi / trả lời.
  2. Chỉnh sửa câu hỏi của bạn / câu trả lời nếu bạn muốn thay đổi hoặc cập nhật nó.
  3. Nếu bạn không hiểu điều gì đó về câu hỏi, để lại nhận xét hỏi. Những vùng cho câu trả lời chỉ được sử dụng cho câu trả lời.
  4. Nếu tác giả của một câu hỏi đánh dấu một câu trả lời như giải pháp, nhãn hiệu này sẽ được hiển thị.
  5. Nhấn vào đây để xem thêm chi tiết về những hoạt động của hệ thống!

1 trả lời

  • Router mới >= RC.3

    import { Router, NavigationStart, NavigationEnd, NavigationError, NavigationCancel, RoutesRecognized } from '@angular/router';
    
    constructor(router:Router) {
      router.events.forEach((event) => {
        if(event instanceof NavigationStart) {
        }
        // NavigationEnd
        // NavigationCancel
        // NavigationError
        // RoutesRecognized
      });
    }

    Bạn cũng có thể lọc (filter) theo sự kiện nhất định:

    import 'rxjs/add/operator/filter';
    
    constructor(router:Router) {
      router.events
        .filter(event => event instanceof NavigationStart)
        .subscribe((event:NavigationStart) => {
          // You only receive NavigationStart events
        });
    }

    Sử dụng toán tử pairwise để lấy được sự kiện trước đó và sự kiện hiện tại cũng là một ý hay. Https://github.com/angular/angular/issues/11268#issuecomment-244601977

    import 'rxjs/add/operator/pairwise';
    import {Router} from '@angular/router;
    
    export class AppComponent {
        constructor(private router: Router) {
            this.router.events.pairwise().subscribe((e) => {
                console.log(e);
            }
        });
    }

Không phải là câu trả lời bạn đang tìm kiếm? Tìm kiếm câu hỏi khác với các thẻ javascript angular2 hoặc hỏi câu hỏi mới.