我试图从angular2
中的网址中提取查询参数,如:
this.activatedRoute.queryParams.subscribe((params: Params) => {
this.video0 = params['video0'];
this.video1 = params['video1'];
this.video2 = params['video2'];
this.video3 = params['video3'];
// alert("params are: "+ video0+", "+video1+", "+video2+", "+video3);
});
然后我填充全局变量,我需要用它来调用component
中的另一个方法,但是没有得到全局变量中的值。"
一切都在ngOnInit
内,这就是整个代码的样子:
video0: string;
video1: string;
video2: string;
video3: string;
constructor(private activatedRoute: ActivatedRoute) { }
ngOnInit() {
this.activatedRoute.queryParams.subscribe((params: Params) => {
this.video0 = params['video0'];
this.video1 = params['video1'];
this.video2 = params['video2'];
this.video3 = params['video3'];
// alert("params are: "+ video0+", "+video1+", "+video2+", "+video3);
});
this.sharedRequestPath = this.prepareSharedLinkRequestPath(this.video0,this.video1,this.video2,this.video3); // all these values are undefined or null.
}
但是,当我这样做时,alert(params['video0'])
正在获取值。
更新:
更改代码以填充值:
this.activatedRoute.queryParams.subscribe((params: Params) => {
this.video0 = params['video0'];
this.video1 = params['video1'];
this.video2 = params['video2'];
this.video3 = params['video3'];
// alert("params are: "+ video0+", "+video1+", "+video2+", "+video3);
this.sharedRequestPath = this.prepareSharedLinkRequestPath(this.video0,this.video1,this.video2,this.video3);
alert("sharedRequestPath is "+this.sharedRequestPath);
});
但是,我现在看到两个alter语句加载,一个没有参数,当我关闭它时,另一个加载参数。那是为什么?
我怎样才能做到这一点?无法理解。
答案 0 :(得分:0)
尝试在订阅功能中移动以下行:
this.sharedRequestPath = this.prepareSharedLinkRequestPath(this.video0,this.video1,this.video2,this.video3);
因为您在订阅数据到来之前尝试访问onInit,但是当您尝试在订阅方法中提醒哪个订阅数据时,订阅的数据已经到来。
答案 1 :(得分:0)
这是因为你的可观察事件在你的函数调用之前没有发出值(prepareSharedLinkRequestPath)。
在你的子目录上调用prepareSharedLinkRequestPath