【问题标题】:Cannot receive queryparameters sent in Angular routing无法接收在 Angular 路由中发送的查询参数
【发布时间】:2021-08-23 05:12:07
【问题描述】:

我有一个组件通过一些条件参数路由到另一个组件

这是定义路由的代码:

redirect(topicname : string){
    alert(topicname)
    this.router.navigate(['/chapters'], { queryParams: { topic: topicname } });
  }

在我定义的 Chapters.component.ts 文件中:

export class ChapterstemplComponent implements OnInit {
  topic : string;
  constructor( private route : ActivatedRoute) { 
    this.topic= this.route.snapshot.params.topic;
    alert( this.route.snapshot)
  }

但是 this.topic 没有收到任何值。我想在我的 chapters.component 的 HTML 文件中使用它。 注意:警报消息确认“topicname”在第一个 sn-p 中发送良好 但是在第二个sn -p中,路由没有收到任何参数 这是相同的图像:

第一次/发送警报:

第二次/接收警报:

【问题讨论】:

    标签: angular query-parameters angular-activatedroute


    【解决方案1】:

    我们可以通过paramMap获取查询参数

    尝试执行以下操作,这将获取 ActivatedRoute 的 queryParams 订阅中的参数。

    ngOnInit() {
     this.route.queryParams.subscribe(params => {
        this.topic = params['topic'];
      });
    }
    

    您还可以在此处详细了解路由:navigate-to-other-page

    编码愉快.. :)

    【讨论】:

    • 哇,谢谢!您的详细帖子澄清了我的疑问,请您帮忙解决另一件事...在构造函数内部和ngOnit内部订阅参数有什么区别...尝试过并且都可以工作..我是角度新手,请帮忙!跨度>
    • @suman 这只是一个时间问题。你可以两者都做,因为它们都只被调用一次。我会选择 ngOnInit。另见:angular.io/guide/lifecycle-hooks#peek-a-boo
    • @suman 第一个区别是构造函数来自常规的打字稿特殊方法,其中 ngOnInit() 是 angular 的生命周期方法,将在组件变量和方法初始化后调用。所以推荐使用 ngOnInit() 进行绑定和 api 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2020-09-03
    • 1970-01-01
    • 2017-07-07
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多