Angular 如何在角度上激活路线?
我的网址: 我怎样才能得到“7779394” 我尝试了以下代码:Angular 如何在角度上激活路线?,angular,Angular,我的网址: 我怎样才能得到“7779394” 我尝试了以下代码: this.activatedRoute.queryParams.subscribe(params => { this.ind = params.name; console.log("this.ind " + params.name); }); 但是结果是未定义的,在未定义之后,函数再次运行,我得到了7779394 但它应该只运行一次 如何解决此问题?尝试以下方法:- 在这里,如果URL中没有“name”,
this.activatedRoute.queryParams.subscribe(params => {
this.ind = params.name;
console.log("this.ind " + params.name);
});
但是结果是未定义的,在未定义之后,函数再次运行,我得到了7779394
但它应该只运行一次
如何解决此问题?尝试以下方法:-
在这里,如果URL中没有“name”,订阅查询参数
有时可能会给出未定义的
值。这可能是因为在调用api之前没有定义它。
它是自然的,是一个行为主体
您可以使用过滤器来避免未定义的值
constructor(public route: ActivatedRoute){}
ngOnInit() {
const self = this;
this.route.queryParams.filter(params => params['name'] ).distinctUntilChanged().subscribe(params => {
self.nameVar= params['name']
});
或者
这是一种RxJs
问题
你要做的是过滤可观察到的东西
从'rxjs/operators'导入{map,filter};
this.activatedRoute.queryParams
.烟斗(
map(params=>params.name),//只查询名称。。。
筛选器(name=>name!==undefined),//并筛选它!(未定义)
)
.订阅(名称=>{
//名称将是真实值(未定义)
this.ind=名称;
console.log(“this.ind”+名称);
});
或者如果您需要完整的参数
对象
从“rxjs/operators”导入{filter};
this.activatedRoute.queryParams
.烟斗(
过滤器(params=>params.name!==未定义),//params始终是一个对象,因此您不必检查(params!==未定义)。
)
.订阅(参数=>{
//params.name将是实值(未定义)
this.ind=params.name;
console.log(“this.ind”+参数名);
});
发布一个完整的示例。你的两行代码不足以解释发生了什么。你订阅的是哪个生命周期钩子queryParams
我把它放在了oni中,你有没有试过params.get('name')安装params.name;
this.route.queryParams.filter(params => params['name'])
.subscribe(params => {
self.nameVar = params['name'];
});