从特定页面导航到

时间:2019-11-28 15:49:17

标签: angular ionic4

我要完成的工作是,当我从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);
}

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现此目的,但是根据您提供的简短说明,我将使用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
  },