Angular 6: поиск определенного слова в текущем маршруте - PullRequest
0 голосов
/ 07 октября 2018

У меня есть эта таблица маршрутизации:

// Routing array - set routes to each html page
const appRoutes: Routes = [
  { path: '', redirectTo: '/courses', pathMatch: 'full' },
  { path: 'courses', component: CourseListComponent,  pathMatch: 'full'},
  { path: 'courses/:id', component: CourseDetailComponent, pathMatch: 'full' },
  { path: 'courses/:id/unit/:unitId', component: CoursePlayComponent,
    children: [
      { path: '', component: CourseListComponent },
      { path: 'lesson/:lessonId', component: CourseLessonComponent, data: 'lesson },
      { path: 'quiz/:quizId', component: CourseQuizComponent, data: 'quiz, }
  ]},
  { path: '**', component: PageNotFoundComponent, pathMatch: 'full' }];

//Course-Play.component
     
     constructor(private courseService: CourseService,
          private route: ActivatedRoute,
          private router: Router,
          public sanitizer: DomSanitizer) {
            route.url.subscribe(() => {
                console.log(route.snapshot.children.data); }); // <-- undefined
          }
          
     ngOnInit() {
     
     // this is what I want to do but I don't know how
     if (this.route.snapshot.children.data == 'lesson) {
        // activate lesson children
      }
      else {
        // activate quiz children
       }
     
     }

В ngOnInit в режиме игры я хочу узнать, является ли маршрут уроком /: уроком или викториной /: викториной.Мне нужно только знать, есть ли урок или викторина на маршруте, а затем активировать другого ребенка.Я знаю, как сделать это с params (с route.snapshot), но не со статическим текстом.

РЕДАКТИРОВАТЬ: попытался использовать данные, но он не работает

1 Ответ

0 голосов
/ 07 октября 2018

Вот возможный подход (в пределах ngOnInit вашего компонента), когда this.route внедряется в ваш конструктор как ActivatedRoute:

import { ActivatedRoute, UrlSegment } from '@angular/router';

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.url.subscribe((urlSegments: UrlSegment[]) => {
    switch (urlSegments[4].path) {
      case 'lesson':
        // ...
        break;
      case 'quiz':
        // ...
    }
  });
}

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

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