Показать сообщение отдельно
  #1 (permalink)  
Старый 01.07.2019, 11:00
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Добавить данные в поток
Здравствуйте, уважаемые.
Не могу совладать с RxJS. Следующая ситуация: объявляю переменную и слушаю события роутера. Потом, когда они появляются, на основе URL роутера строю хлебные крошки. Проблема состоит в том, чтобы проинициализировать состояние крошек в момент запуска приложения.
Подскажите пожалуйста, как это сделать. Код погрызен чтобы оставить суть происходящего.

Компонент:

export class BreadcrumbsComponent implements OnInit, OnDestroy {
	breadcrumbs$: Observable<any>;
	constructor(
		private router: Router
	) { }

	ngOnInit(): void {
		this.breadcrumbs$ = this.router.events
			.pipe(
				filter(event => event instanceof NavigationEnd),
				distinctUntilChanged(),
				map( () => this.buildBreadCrumb( this.router.url)
			);
			// Здесь как-то впихнуть результаты вызова buildBreadCrumb с текущим URL в this.breadcrumbs$
	}

	buildBreadCrumb(url: string): BreadCrumb[] {
		let breadCrumbs: BreadCrumb[] = [];
		...
		breadCrumbs = [newCrumb, ...this.buildBreadCrumb(url)];
		return breadCrumbs;
	}

}


Щаблон:
<ul class="breadcrumb">
	<li *ngFor="let breadcrumb of breadcrumbs$ | async">
		<a  [routerLink]="['/' + breadcrumb.path ]">{{ breadcrumb.name }}</a> 
		<i class="fas fa-angle-right"></i> 
	</li>
</ul>
Ответить с цитированием