当前位置: 首页 > 知识库问答 >
问题:

通过 Angular2 路由器传递数据

卫乐童
2023-03-14

有什么简单的方法可以实现这一点吗?

这是我导航到路线的代码

  public gotoCreateAlbum(): void {
    this.router.navigate([('/create-album')])
  }

@Input() selectedPhotos: IPhoto[];

这是我的路由模块

const routes: Routes = [
  { path: 'photos',  component: PhotosComponent},
  { path: 'photos/:filter', component: PhotosComponent},
  { path: 'create-album', component: CreateAlbumComponent}
];

基本上,我希望执行与CreateAlbum组件是当前组件的子组件相同的操作,在这种情况下,我将使用@Input()

共有3个答案

汪永春
2023-03-14

除非您希望用户操作地址栏中的查询字符串,否则请在发送数据之前和接收数据之后执行“atob”和“btoa”。只是一点点安全感

// before
this._router.navigate(["/welcome/" + atob(userName)]);

// after
ngOnInit() {
    this.userName = btoa(this.route.snapshot.params['userName']);
}
公瑞
2023-03-14
gotoHeroes(hero: Hero) {
  let heroId = hero ? hero.id : null;
  // Pass along the hero id if available
  // so that the HeroList component can select that hero.
  // Include a junk 'foo' property for fun.
  this.router.navigate(['/heroes', { id: heroId, foo: 'foo' }]);
}

要获取目标组件中“id”的值:

ngOnInit() {
  this.heroes$ = this.route.paramMap.pipe(
    switchMap((params: ParamMap) => {
      // (+) before `params.get()` turns the string into a number
      this.selectedId = +params.get('id');
      return this.service.getHeroes();
    })
  );
}
桂玉石
2023-03-14

我希望这会起作用。尝试使用查询参数。

 <nav>
      <a [routerLink]="['/component1']">No param</a>
      <a [routerLink]="['/component2']" [queryParams]="{ page: 99 }">Go to Page 99</a>
 </nav>

或者

opencomponent2(pageNum) {
    this.router.navigate(['/component2'], { queryParams: { page: pageNum } });
  }

在子组件中:

constructor(
    private route: ActivatedRoute,
    private router: Router) {}

  ngOnInit() {
    this.sub = this.route
      .queryParams
      .subscribe(params => {
        // Defaults to 0 if no query param provided.
        this.page = +params['page'] || 0;
      });
  }

我在rangle.io网站上研究过这个。如果对你有用,试试这个。否则https://angular . io/docs/ts/latest/cookbook/component-communication . html #!#双向-服务是唯一选项。

 类似资料:
  • 所以我有一些路线,比如<code>/category/tech</code>和<code</categority/tech/new<code>和<code>/category/tech/old</code>等等 他们都使用 或者我必须分别定义它们,就像

  • 我无法使用反应路由器通过道具。我到现在为止的代码: 错误截图 我正试图访问控制台中的id,就这么简单。 错误仅在我尝试传递道具时显示 源链接:https://reacttraining.com/react-router/web/api/Route/route-props

  • 我需要将数据传递到我的路由器,以便在目的地组件中使用它,我使用了< code>NavigationExtras的< code>QueryParam,但它在URL中显示参数,还有其他传递数据的方法吗?

  • 例如,在具有分页列表的路由上,网址可能如下所示,表示我们已加载第二个网页: 使用指令和来传递查询参数。例如: 或者,我们可以使用服务通过JS跳转: 读取查询参数 See Official Documentation on Query Parameters

  • 是否可以在Angular2中从一条路线返回数据到另一条路线?类似于使用模态搜索/选择一些数据,然后将其返回。 应用程序从/mainRoute开始。 用户单击搜索按钮 导航到/搜索 加载新路由/组件 用户选择X数据 我“关闭”当前路线(即返回/主路线) /mainRoute组件现在具有X对象 在Angular1中,我做了我自己的路由服务,它通过promise实现了这一点: 在Angular2中是否有

  • 我正在使用react with react路由器。我正试图在react路由器的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据?