2017-01-18 1 views
8

Я показываю ряд предметов, на которые вы можете нажать, чтобы перейти к следующему маршруту. Вы также можете щелкнуть всплывающее окно на этой странице. Если вы нажмете на всплывающее окно, а затем щелкните по одному из элементов, которые я хотел бы уничтожить всплывающее окно, прежде чем отображать следующий маршрут.Как закрыть всплывающее окно маршрута перед переходом на следующее место? (Угловой 2)

onSelect(id) { 
    if (this.router.url.includes('popup')) { 

     let p = Promise.resolve(() => this.closePopup()) 
     p.then(() => this.router.navigate(['/', id])) 

    } else { 

     this.router.navigate(['/', id]) 

    } 
    } 

closePopup() { 
    this.router.navigate([{outlets: {popup: null}}]) 
    } 

Я не очень понимаю, обещания, поэтому я не уверен, что я написал в правильной структуре, но этот код не работает, как он всегда будет перемещаться к следующему маршруту с всплывающим окном еще внутри URL. Я попытался сделать это в той же структуре вне обещания, но он всегда будет переходить к: id с (всплывающим) по-прежнему в URL-адресе.

Я также пробовал: this.router.navigate(['/', id, {outlets: {popup: null}}]).

Есть ли функция внутри маршрутизатора, которая позволяет абсолютное переписывание URL-адреса? Или есть способ убедиться, что он удалит всплывающее окно с URL-адреса, прежде чем перейти к идентификатору:.

Надежда проблема понятна - помощь очень ценится!

ответ

0

Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен bug report.

В соответствии с этим this.router.navigate([{ outlets: { popup: null } }); должен работать.

Но также можно явно задать URL-адрес через this.router.navigateByUrl('/'), что должно привести к сбою любых названных торговых точек.

Следуйте за проблемой GitHub, так как она была недавно добавлена ​​в отставание и вскоре может быть исправлена ​​в предстоящей версии Angular.

В качестве альтернативы, вы можете найти другой возможный обходной путь в this issue:

this.router.navigate([this.route.parent.snapshot.params, {outlets: {popup: null}}]); 

 Смежные вопросы

  • Нет связанных вопросов^_^