Я использую Angular 6 с RxJs 6.
Я пытаюсь получить значение из paramMap и присвоить его свойству.Маршрут выглядит следующим образом:
{
path: 'post/:postName',
component: PostComponent
}
Компонент post в настоящее время выглядит следующим образом:
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, ParamMap } from '@angular/router';
import { switchMap } from 'rxjs/operators';
import { Observable, of } from 'rxjs';
import * as matter from 'yaml-front-matter';
import { Post } from '../../models/post';
@Component({
selector: 'blog-post',
templateUrl: './post.component.html',
styleUrls: ['./post.component.css'],
encapsulation: ViewEncapsulation.Emulated
})
export class PostComponent implements OnInit {
created: Date;
postName = '';
markdown = '';
title = '';
loading = true;
author = '';
constructor(private route: ActivatedRoute) { }
async ngOnInit () {
this.route.paramMap.pipe(
switchMap((params: ParamMap) =>
of(params.get('postName'))
)
).subscribe(d => this.postName = d);
const file = await fetch(`/_posts/${this.postName}.md`);
const text = await file.text();
const content = text.trim();
this.parseFrontMatter(content);
}
parseFrontMatter (content: string) {
const frontMatter: Post = matter.loadFront(content);
this.title = frontMatter.title;
this.author = frontMatter.author;
this.created = frontMatter.created;
this.markdown = frontMatter.__content;
this.loading = false;
}
}
В ngOnInit есть код для получения значения из paramMap.Этот код работает, если вы не попытаетесь перенаправить обратно на компонент post с другим параметром.
Это можно наблюдать по адресу Devbin.io .
- Перейти на страницу сообщений
- Нажмите на единственный пост
- Теперь попробуйте перейти на страницу about, которая является просто другим сообщением.
- Обратите внимание, что он не будет перенаправлен на страницу About, даже если URL обновлен.
Полный текстисточник может быть найден на GitHub
Вся документация и другие ответы на переполнение стека всегда предполагают, что вы хотите вызвать службу в функции switchMap.Официальная документация: здесь
Мой вопрос: как мне получить параметр маршрута и назначить его свойству и сохранить работу навигации при переходе обратно на тот же маршрут?