6

我无法将路由参数检索为空。我正在使用 angular7。请在下面找到代码

HeaderComponent ts文件

    import {Router, ActivatedRoute} from '@angular/router';
    constructor(private httpService: HttpClient, private router: Router, private activatedRoute: ActivatedRoute) {
             this.getNewsSelectedFromRouteParam();
        }
    getNewsSelectedFromRouteParam() {
            alert();
            let id = this.activatedRoute.snapshot.paramMap.get('typeId');
            alert(id);
        }
getNewsByCountry(newsTypeSelected: any) {
        this.router.navigate(['/news',newsTypeSelected]);
        this.getNewsSelectedFromRouteParam();
    }

标题 html

<div class=" dropdown-toggle" data-toggle="dropdown">
                XXX
            </div>
            <div class="dropdown-menu">
                <div *ngFor="let cr of country" class="dropdown-item"
                    (click)="getNewsByCountry(cr.value)" >{{cr.name}}</div>
            </div>

应用路由ts文件

 const routes: Routes = [
        { path: 'news/:typeId', component: XxxComponent },
    { path: '**', component: XxxComponent }
    ];
4

4 回答 4

7

有两种访问路由参数的方法。

  1. 静态(页面加载时一次)
  2. 动态(如果在您的应用程序中更改参数而不通过浏览器重新加载页面,则获取更新)

您可以在此处获得更多参考:https ://angular.io/api/router/ActivatedRouteSnapshot

请参阅以下代码段以进行实施:

let id = this.activatedRoute.snapshot.params.typeId; // any param name after "params"

或者

this.activatedRoute.params.subscribe((params) => {
    let id = params.get('typeId');
});

确保在组件初始化时使用上面的代码,即在 ngOnInit() 中或之后。

于 2019-01-22T13:28:42.093 回答
1

你也可以试试

let id = this.activatedRoute.snapshot.queryParams.id

获取所有路由共享的查询参数

于 2020-03-30T06:32:50.990 回答
1

我试图在“HeaderComponent ts”中获取应该从“XxxComponent”调用的参数。我在 XxxComponent ts 文件中添加了该路由参数代码,现在可以按预期工作。我能够获得路线参数。

于 2019-01-23T08:50:55.297 回答
0

你在(点击)中调用getNewsByCountry,可能cr.value为null,cr.value是什么?是身份证吗?

于 2019-01-22T13:13:34.297 回答