【问题标题】:router.navigateByUrl don't send value Angularrouter.navigateByUrl 不发送值 Angular
【发布时间】:2018-11-03 12:07:39
【问题描述】:

我正在尝试在组件 Angular 之间发送 1 个值...但是当我到达我的组件时,我什么也没有收到。

组件1:

onCellClicked(event) {
    if (event.colDef.field === 'dni') {
      console.log('dni en mi componente : ', event.value);
      this.router.navigateByUrl('probarborrar/', event.value);
    }
  }

首先检查Cell是否为dni,然后我显示"console.log(event.value)"是真的,我可以看到我的dni。最后我去第二个组件。

路由。

     {
        path: 'probarborrar/:idUser',
        component: ProbandoBorrarComponent,
        data: {
          breadcrumb: 'probar'
        }
      }

组件2。

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-probando-borrar',
  templateUrl: './probando-borrar.component.html',
  styleUrls: ['./probando-borrar.component.scss']
})
export class ProbandoBorrarComponent implements OnInit {
  public dni;

  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    this.dni= this.route.snapshot.paramMap.get('idUser');
    console.log('en probando es :', this.dni); -->nothing
  }
}

html

<p style="color:white;background-color:black;">
  probando-borrar works! : {{ dni }}
</p>

我可以到达 Component2,但我什么也没收到。

【问题讨论】:

    标签: angular


    【解决方案1】:

    您应该为此使用navigate 函数。显然navigateByUrl 有一个issue with queryParams。 其次,您需要将navigationExtras 对象传递给navigate 函数。

    查看代码示例。

    this.router.navigate(['probarborrar'], {queryParams: {idUser: event.value}});
    

    在component2中,检索类似的值

    constructor(private activatedRoute: ActivatedRoute) {}
    
    ngOnInit() {
      this.activatedRoute.queryParams.subscribe((params) => {
          console.log(params['idUser']);
      });
    }
    

    工作演示:https://stackblitz.com/edit/angular-ytfgp8

    【讨论】:

    • console.log(params['idUser']);未定义
    • @EduBw 看起来像problem is with navigateByUrl。您应该改用navigate function。我更新了我的代码示例并添加了一个演示供您查看。
    • ERROR 错误:未捕获(在承诺中):错误:无法匹配任何路由。 URL 段:'probarborrar' 错误:无法匹配任何路由。 URL 段:'probarborrar'
    • 为您的组件创建路由2。这一切都在演示中进行了演示。
    • 好的,完美,我看到了我的错误,非常感谢,其他问题我无法隐藏 idUser 的 URL ???
    【解决方案2】:

    试试这个。

    import { map } from 'rxjs/operators';

    ngOnInit() {
        this.dni = this.route
          .queryParamMap
          .pipe(map((params) => {
            const param = params.get('idUser');
            console.log(param);
            return param;
          }
          ));
      }
    

    here 中了解有关路由和导航的更多信息。

    【讨论】:

    • 找不到名称 map .pipe(map(...)
    • 您是否从 rxjs/operators 导入了 map
    • 是的,现在我在 html 中导入地图结果:[object Object]
    • console.log 输出并查看。或者您可以使用 json 管道将其打印在 html {{ result | json}}
    猜你喜欢
    • 2017-12-14
    • 2018-08-11
    • 1970-01-01
    • 2018-08-07
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多