Feature Models
Feature module 也可以處理 Routing
此篇有再切出 Forums 與 Blogs module
Forums(forums.module.ts)
const forumRoutes: Routes = [
{ path: 'forums', component: ForumsComponent }
]
imports: [
BrowserModule,
FormsModule,
HttpModule,
ClarityModule.forChild(),
RouterModule.forChild(forumRoutes)
],
Routes 在設計上就是可以帶有一些例訊的
那麼 ForumsComponent 該如何才能處理上面說的資訊呢?
const forumsRoutes: Routes = [
{ path: 'forums', component: ForumsComponent },
{ path: 'forums/:forum_alias', component: ForumComponent }
];
<a class="nav-link"
routerLink="/forums">
<span class="nav-text">Forums</span>
</a>
<tr *ngFor="let forum of forums"
[routerLink]="[forum.alias]">
</tr>
好啦,上面設了這麼多東西,要怎麼從 URL 取得資訊?
先修改 ForumComponent 的 controller 如下
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router, Params } from '@angular/router';
import { ForumsService } from '../services/forums.service';
import { Forum } from '../services/data';
@Component({
selector: 'app-forum',
templateUrl: './forum.component.html',
styleUrls: ['./forum.component.css']
})
export class ForumComponent implements OnInit {
forum: Forum;
constructor(
private forumsService: ForumsService,
private route: ActivatedRoute,
private router: Router ) { }
ngOnInit() {
this.route.params.subscribe((params:Params) =>{
// 'forum_alias' was defined in the Forums module
this.forum = this.forumsService.forum(params['forum_alias']);
if(!this.forum) this.router.navigate(['/not-found']);
});
}
}
小結: