最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Angular 2 router global state change event - Stack Overflow

matteradmin6PV0评论

There is a global event that we can use when state change/start that not per ponent unlike the Component Lifecycle Hooks ? like in UI-router:

  $rootScope.$on("$stateChangeStart", function() {})

There is a global event that we can use when state change/start that not per ponent unlike the Component Lifecycle Hooks ? like in UI-router:

  $rootScope.$on("$stateChangeStart", function() {})
Share Improve this question edited Feb 11, 2019 at 3:46 user10747134 asked Dec 21, 2015 at 7:29 user233232user233232 6,2179 gold badges30 silver badges37 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 1

It depends on what you want to achieve, but it is possible to inject Router in your top level ponent and .subscribe() to it to get the stream of states.

I used it to build functionality that changes browser's title based on current state. That being said you can think about it as equivalent of $stateChangeSuccess and $stateChangeFailureevents from Angular 1.

The code will be:

constructor(router: Router) {
    router.subscribe(successHandler, failureHandler);
}

Also take a look on OnActivate which is also related to these concepts.

My code, for ui-router, has ended up looking something like the following to replace ng1 $rootScope $stateChangeSuccess for Angular2:

import { Component } from '@angular/core';
import { TransitionService } from "ui-router-ng2";

@Component({selector: 'app-stage-tag',template: '...'})
class AppComponent {
  constructor(public transitionService: TransitionService){
    transitionService.onSuccess({to:'*'}, transition=>{
      console.log('state', transition._targetState._definition)
      console.log('params', transition._targetState._params)
    })
  }
}
Post a comment

comment list (0)

  1. No comments so far