Включить параметр как часть данных в Angular - PullRequest
0 голосов
/ 30 января 2019

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

{
    path: 'bookings',
    data: { translation: 'reservas' },
    loadChildren: './booking/booking.module#BookingModule'
},

, чтобы я мог правильно перенаправить фиксированную панель навигации с различными языковыми настройками и сохранить «тот же URL», который имеет смысл.Для этого у меня есть следующий код:

ngOnInit(): void {
        this.router.events.pipe(filter(event => event instanceof NavigationEnd)
        , map(() => {
          let child = this.activatedRoute.firstChild;
          while (child) {
            if (child.firstChild) {
              child = child.firstChild;
            } else if (child.snapshot.data && child.snapshot.data['translation']) {
              return child.snapshot.data['translation'];
            } else {
              return null;
            }
          }
          return null;
        })).subscribe( (t: string) => {
             this.translatedUrl = t
        });
    }

Когда я затем нажимаю на элемент, чтобы поменять язык, я заменяю текущий маршрут URL на его перевод, если это имеет смысл.

Первая проблема, с которой я столкнулся, заключается в том, что когда у меня есть параметры, я не могу их правильно обработать, потому что я не знаю, как получить их из компонента, который уже обработан, поэтому я не знаю, как получить«обновил» activatedRoute, который потенциально мог бы использовать.Кроме того, я не знаю, включаете ли вы эту информацию как часть объекта данных, я имею в виду что-то вроде этого:

{
    path: ':id',
    data: { translation: 'something', id: ':id' },
    loadChildren: './something/something.module#SomethingModule'
},

И, очевидно, мой второй вопрос заключается в том, что, учитывая весь этот код, я неНе знаю, есть ли более простой способ добиться этого.

ОБНОВЛЕНИЕ:

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

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