Можно ли использовать TranslateService внутри AppRoutingModule? - PullRequest
0 голосов
/ 01 апреля 2019

Итак, я использую модуль автоматического поиска панировочных сухарей, и мне нужно перевести заголовки с помощью моего TranslateService, как его использовать, когда я объявляю const из Routes.

Вот мой AppRoutingModule

import { NgModule, Injector } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

// Components ========================================
import { HomeComponent } from './pages/home/home.component';
import { AltaRepresentacioComponent } from './pages/representacio/alta-representacio/alta-representacio.component';
import { ConfirmacioAltaComponent } from './pages/representacio/alta-representacio/confirmacio-alta.component';
import { ConsultaRepresentacioComponent } from './pages/representacio/consulta-representacio/consulta-representacio.component';
import { ConsultaAplicacioComponent } from './pages/aplicacio/consulta-aplicacio/consulta-aplicacio.component';
import { PermisosComponent } from "./pages/permisos/permisos.component";
import { ErrorPageComponent } from "./shared/error/error-page.component";
import { TranslateService} from '@ngx-translate/core';

const routes: Routes = [
  { path: '*', redirectTo: '' },
  {
    path: '',
    component: HomeComponent,
  },
  {
    path: 'representacio',
    children: [
      {
        path: 'alta',
        children: [
          {
            path: '',
            component: AltaRepresentacioComponent
          },
          {
            path: 'confirmacio',
            component: ConfirmacioAltaComponent,
            data: {
              breadcrumb: 'Confirmació de Representació'
            }
          }
        ],
        data: {
          breadcrumb: 'Alta de Representació'
        }
      },
      {
        path: 'consulta',
        component: ConsultaRepresentacioComponent,
        data: {
          breadcrumb: 'Consulta Representacions'
        }
      }
    ]
  },
  {
    path: 'permisos',
    component: PermisosComponent,
    data: {
      breadcrumb: 'Permisos'
    }

  },
  {
    path: 'error',
    component: ErrorPageComponent,
    data: {
      breadcrumb: 'ErrorPage'
    }
  }
];

@NgModule({
  // imports: [RouterModule.forRoot(routes)],
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule],
  providers: []
})
export class AppRoutingModule { }

Здесь я использую хлебную крошку (HTML):

<div class="col-12 no-left-padd">
            <nav aria-label="breadcrumb">
              <ol class="breadcrumb">
                <li *ngFor="let breadcrumb of breadcrumbs; let last = last;" class="breadcrumb-item">
                  <span *ngIf="!last">
                    <a routerLink="{{breadcrumb.url}}">
                      {{ breadcrumb.label }}
                    </a>
                  </span>
                  <span *ngIf="last"> {{ breadcrumb.label }} </span>
                </li>
                <!-- <li class="breadcrumb-item active" aria-current="page">Consulta representació</li> -->
              </ol>
            </nav>
          </div>

Кусок кода, где я меняю крошку с помощью ActivatedRoute:

ngOnInit() {
        let breadcrumb: BreadCrumb = {
            label: this.translate.instant('breadcrumb.inici'),
            url: ''
        };

        this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
            //set breadcrumbs
            let root: ActivatedRoute = this.route.root;
            this.breadcrumbs = this.getBreadcrumbs(root);
            this.breadcrumbs = [breadcrumb, ...this.breadcrumbs];

        });
    }

Я попробовал несколько способов, но я действительно новичок в angular и Typescript, поэтому я не совсем понимаю, как работают несколько вещей, таких как сервисы Inject и тому подобное, так что, если вы могли бы помочь мне найти способ реши это. Потому что я знаю только один способ использования TranslateService - это объявить его в конструкторе, но я не могу использовать его для создания маршрутов const.

1 Ответ

0 голосов
/ 01 апреля 2019

Вы можете дать ключ i18n крошке:

data: {
  breadcrumb: 'foo.bar.xyz'
}

Затем в шаблоне вы можете использовать TranslatePipe из @ngx/translate:

<a routerLink="{{breadcrumb.url}}">
  {{ breadcrumb.i18nKey | translate }}
</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...