Angular2:查询参数没有填充到全局变量

时间:2018-05-07 09:52:51

标签: angular query-parameters

我试图从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语句加载,一个没有参数,当我关闭它时,另一个加载参数。那是为什么?

我怎样才能做到这一点?无法理解。

2 个答案:

答案 0 :(得分:0)

尝试在订阅功能中移动以下行:

this.sharedRequestPath = this.prepareSharedLinkRequestPath(this.video0,this.video1,this.video2,this.video3);

因为您在订阅数据到来之前尝试访问onInit,但是当您尝试在订阅方法中提醒哪个订阅数据时,订阅的数据已经到来。

答案 1 :(得分:0)

这是因为你的可观察事件在你的函数调用之前没有发出值(prepareSharedLinkRequestPath)。

在你的子目录上调用prepareSharedLinkRequestPath