41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { Component, OnInit, OnDestroy } from "@angular/core";
|
|
import { ActivatedRoute, UrlSegment } from "@angular/router";
|
|
import { map } from "rxjs/operators";
|
|
import { DocumentFetchService } from "../services/document-fetch.service";
|
|
import { DocumentData } from "../symbols/DocumentData";
|
|
import { MarkdownService } from "ngx-markdown";
|
|
import { CurrentDocumentService } from "../services/current-document.service";
|
|
|
|
@Component({
|
|
selector: "app-article",
|
|
templateUrl: "./article.component.html",
|
|
styleUrls: ["./article.component.scss"]
|
|
})
|
|
export class ArticleComponent implements OnInit, OnDestroy {
|
|
|
|
public documentData: DocumentData;
|
|
|
|
constructor(
|
|
private activatedRoute: ActivatedRoute,
|
|
private documentFetcher: DocumentFetchService,
|
|
private markdownService: MarkdownService,
|
|
private currentDocumentService: CurrentDocumentService
|
|
) { }
|
|
|
|
ngOnInit() {
|
|
this.activatedRoute.url
|
|
.pipe(map((urlSegments: UrlSegment[]) => urlSegments.map(urlSegment => urlSegment.path).join("/")))
|
|
.subscribe(async (url: string) => {
|
|
const docData: DocumentData = await this.documentFetcher.fetch(url);
|
|
this.documentData = docData;
|
|
this.currentDocumentService.setCurrentDocument(docData);
|
|
});
|
|
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.currentDocumentService.setCurrentDocument(null);
|
|
}
|
|
|
|
}
|