Angular2: параметры запроса не заполняются глобальными переменными - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь извлечь параметры запроса из URL в 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']) получает значения.

UPDATE

Изменен код для заполнения значений:

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 голосов
/ 07 мая 2018

Это потому, что ваша наблюдаемая не передает значения перед вызовом функции (prepareSharedLinkRequestPath).

Вызовите prepareSharedLinkRequestPath для вашей подписки

0 голосов
/ 07 мая 2018

Попытка переместить нижнюю строку внутри функции подписки:

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

так как вы пытаетесь получить доступ к onInit незадолго до того, как пришли подписанные данные, но когда вы пытаетесь предупредить, который находится внутри метода подписки, в этот момент пришли подписанные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...