从特定页面导航到时如何激活 angular 方法

how do I activate an angular method when navigated to from a specific page

我想要完成的是,当我从 PageTwo 导航到 PageOne 时,它​​将触发一个方法 addSomthing() {}。但是我不想在从 PageThree 导航时触发该方法。

有没有办法使用来自@angular/router 的 NavigationExtras 来完成这个。

.ts

goToPageOne(passed_number: string) {
  let navigationExtras: NavigationExtras = {
    state: {
      severityNumberPass: passed_number
      // add something to fire method addSomething
    } 
  };
  this.router.navigate(['/PageOne'], navigationExtras);
}

有几种方法可以实现这一点,但根据您提供的简要说明,我会使用 CanDeactivateCanActivate 方法

两者都是您在 angular 上作为服务实现的接口,并将它们设置为路由器级别:

interface CanActivate {
  canActivate(route: ActivatedRouteSnapshot
             , state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean
}

实施如下:

@Injectable({
  providedIn: 'root',
})
export class SomeServiceGuard implements CanActivate {
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): boolean {
     //--> someMethod() could be invoked here
    console.log('Some validation can go here #canActivate called');
    return true;
  }
}

在路由中配置如下

export const ROUTES: Routes = [
  { path: '', component: AppComponent },
  { 
    path: 'other', 
    component: OtherComponent, 
    canActivate: [SomeServiceGuard] //<--- here
  },