通过Angular 2路径传递动态数据

Kal*_*eab 10 typescript angular2-routing angular

可以将静态数据传递给Angular 2路由而不在URL上显示它.

但是如何以相同的方式传递动态数据/对象?

Gün*_*uer 5

您可以使用解析器。解析器返回的数据可用于路由,其方式data与路由配置中的静态方式相同:

有关示例,请参见https://angular.io/guide/router#resolve-guard

@Injectable()
export class CrisisDetailResolve implements Resolve<Crisis> {
  constructor(private cs: CrisisService, private router: Router) {}
  resolve(route: ActivatedRouteSnapshot): Promise<Crisis>|boolean {
    let id = route.params['id'];
    return this.cs.getCrisis(id).then(crisis => {
      if (crisis) {
        return crisis;
      } else { // id not found
        this.router.navigate(['/crisis-center']);
        return false;
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)
path: '',
component: CrisisListComponent,
children: [
  {
    path: ':id',
    component: CrisisDetailComponent,
    canDeactivate: [CanDeactivateGuard],
    resolve: {
      crisis: CrisisDetailResolve
    }
  },
Run Code Online (Sandbox Code Playgroud)
ngOnInit() {
  this.route.data
    .subscribe((data: { crisis: Crisis }) => {
      this.editName = data.crisis.name;
      this.crisis = data.crisis;
    });
}
Run Code Online (Sandbox Code Playgroud)