【问题标题】:How to pass a value by url with unvisible in angular 8如何通过角度8中不可见的url传递值
【发布时间】:2023-02-23 13:18:35
【问题描述】:

我在 angular8 中通过 url 传递一个值。无法从主要组件获取传递值。此外,id=2 将在 url 中可见,但 gt 不应在 url 中可见。这就是我使用 skipLocationChange 的原因。 skipLocationChange=true 无法正常工作。那么,如何解决这个问题?

header.component.ts:

  nextComp() {
  this.router.navigate(['/dashboard'], { queryParams: { id: '2' } });
  this.router.navigate([], {
  relativeTo: this.route,
  queryParams: {
    gt: 'hc',
  },
  queryParamsHandling: 'merge',
  skipLocationChange: true,
  });
  }

main.component.ts:

  ngAfterViewInit() {
  this.route.queryParams.subscribe((param: Params) => {
  console.log(param['id']);
  console.log(param['gt']);

  if(param['gt'] == 'dc'){
    alert("You are coming from dashboard component")
  }
  if(param['gt'] == 'hc'){
    alert("You are coming from header component")
  }

 }); 
 }

仪表板.component.ts:

  nextComp() {
   this.router.navigate(['/dashboard'], { queryParams: { id: '2' } }); 
   this.router.navigate([], {
   relativeTo: this.route,
   queryParams: {
    gt: 'dc',
   },
   queryParamsHandling: 'merge',
   skipLocationChange: true,
  });
  }

演示:https://stackblitz.com/edit/angular-feature-modules-final-example-1mfbmx?file=app%2Fdashboard%2Fmain%2Fmain.component.ts

【问题讨论】:

    标签: angular typescript angular8 angular9


    【解决方案1】:

    而不是写 router.navigate 两次为什么你不做这样的事情,

    this.router.navigate(['/dashboard'], { queryParams: { id: '2' , gt: 'dc'} }); 
    
    

    还有你在使用 ngAfterViewInit 的地方忘了实现 AfterViewInit,

    所以添加它,

    import { AfterViewInit, Component, OnInit } from '@angular/core';
    
    export class DashboardComponent implements OnInit, AfterViewInit {
    
    

    【讨论】:

    • 请检查我的问题并尝试编辑我的 stackblitz?
    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多