Как использовать излучатели событий с маршрутизацией в angular 7
Здравствуйте, у меня есть кусок кода, который испускает и связывает "пост" abject между тремя компонентами(PostList, App, PostEdit). Теперь я хочу использовать маршрутизацию таким образом, чтобы PostList и PostEdit имели разные навигации. Пожалуйста, помогите мне, как использовать события с помощью <router-outlet> в angular 7.
Вот мое испущенное событие :
<pre>@Output() emittedPost = new EventEmitter<Post>(); onFetchPost(id : string){ const fetchedPost : Post = this.postsService.fetchPost(id)[0]; console.log("Fetched Post",fetchedPost); this.emittedPost.emit(fetchedPost); }
Получение должности в app.component.html :
<pre><app-header></app-header> <main> <!-- <router-outlet></router-outlet> --> <app-post-create [receivedPost]="receivedPost"></app-post-create> <app-post-list (emittedPost)="onRecivePost($event)"></app-post-list> </main>
приложение.компонент.ТС:
export class AppComponent { receivedPost : Post; onRecivePost(post : Post){ console.log("Received Post in app component",post); this.receivedPost = post; } }
Привязка в компоненте PostList
@Input() receivedPost: Post; ngOnChanges(){ try{ if (this.receivedPost !== null){ this.enteredTitle = this.receivedPost.title; this.enteredContent = this.receivedPost.content; console.log("Received Post in edit component",this.receivedPost); } } catch{ console.log("No Posts"); }
Когда я нажимаю на кнопку редактировать сообщения, они передаются между компонентами. Но, что мне нужно, так это включить эту "розетку маршрутизатора" в app.component.html так что PostList и PostEdit должны приходить на разные навигации. Поэтому, пожалуйста, посоветуйте мне, как использовать <router-outlet> вместе с event emmitting
Вот мое приложение-routing.module.ts:
import { NgModule } from "@angular/core"; import { RouterModule, Routes } from "@angular/router"; import { PostListComponent } from "./posts/posts-list/post-list.component"; import { PostCreateComponent } from "./posts/posts-create/post-create.component"; const routes: Routes = [ { path: '', component: PostListComponent }, { path: 'create', component: PostCreateComponent }, { path: 'edit', component: PostCreateComponent} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule {}
Что я уже пробовал:
Я попробовал сделать
<router-outlet></router-outlet>к
<router-outlet (emittedPost)="onRecivePost($event)"></router-outlet>
Но, похоже, это даже не помогает.
Заранее спасибо