Angular2:路由器未填充参数

Angular2: router not populating params

本文关键字:填充 参数 路由器 Angular2      更新时间:2023-09-26

所以,我对这个失去了理智

我有一个包含许多组件的页面。。。但出于某种原因,我有一个问题。。。

它是在页面的标题中进行主搜索。。。出于调试目的,我将其精简到最低限度,但仍然无法工作

这是我的搜索组件

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

@Component({
    selector: 'main-search',
    template: `<div></div>`,
})
export class MainSearch implements OnInit {
    private sub: any;
    constructor(private route: ActivatedRoute){
    }
    ngOnInit(){
        this.sub = this.route.params.subscribe(params => {
            console.log('PARAMS FROM MAIN SEARCH', params);
        });
    }
}

正如你所看到的,我正试图从URL(f.e。http://localhost:8080/indices;搜索=测试)

未填充

我有一个具有精确行为的类似组件(订阅params onInit…

this.sub = this.route.params.subscribe(params => {
    console.log('PARAMS FROM INDICES: ', params);
})

那一个居然记录了那些该死的情人!

来自控制台:

PARAMS FROM MAIN SEARCH Object {} => main-search.ts?8502:24
Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.   => lang.js?c27c:360
null => index.service.ts?0bf5:40
FROM API => index.service.ts?0bf5:49
PARAMS FROM INDICES:  Object {search: "test"} => indicesList.component.ts?5ff1:63 

奇怪的是,只有主搜索才会在Angular2免责声明之前登录到控制台

主搜索没有得到参数会是什么问题?

我认为您需要使用ActivatedRoute。

这应该适用于您的情况:

constuctor(
    private _activatedRoute: ActivatedRoute,
) {}
ngOnInit() 
    this._activatedRoute.params.subscribe(params => console.log(params));
}

问题是,你的"主搜索"是几个组件的深度,路由器params observable从根url发出params。而ActivatedRoute从当前路由发出params。