Angular中的动态路由(来自数据库)

时间:2018-07-05 18:48:12

标签: angular asp.net-mvc-5 architecture routes

我想将使用 ASP.NET MVC 创建的旧网站迁移到 Angular + RESTful API 。旧网站有一个非常好的自定义CMS,我们可以在该网站上添加新的 Page ,并提供自定义URL和 Controller 名称,以及网站的所有路由穿过主要的 Controller ,通过URL搜索 Page 对象并调用最终的 Controller ,如下所示:


示例1:

URL请求:/ news
MainController:在Page表上找到“ / news”,为此对象存储的控制器是NewsController;
MainController调用NewsController;
NewsController调用适当的Model和View。


示例2:
网址请求:/ contact-us
MainController:在Page表上找到“ / contact-us”,为此对象存储的控制器是ContactUsController;
MainController调用ContactUsController;
ContactUsController调用适当的模型和视图。


现在我想用 Angular 来做到这一点,像这样:

app-routing.module.ts:

// no specific routes will be created
const routes: Routes = [
  { path: '**', component: MainComponent }
];

main.component.ts:

@Component({
  selector: 'app-main',
  template: ``
})
export class MainComponent implements OnInit {

 constructor(private urlService: UrlService) { }

 ngOnInit() {

   const url: string = route.snapshot.url.join('');

   this.urlService.get(url).subscribe(page => {

      // now I don´t know how to call another component by the name
      page.componentName

   });
 }
}

示例1:

URL请求:/ news
MainComponent:使用“ news”参数调用UrlService,该参数返回Page对象,并且为此对象存储的组件名称为NewsComponent;
MainComponent调用NewsComponent;
NewsComponent调用适当的服务和模板。


示例2:
网址请求:/ contact-us
MainComponent:使用“ contact-us”调用UrlService,该方法返回Page对象,并且为此对象存储的组件名称为ContactUsComponent; MainComponent调用ContactUsComponent;
ContactUsComponentcall调用适当的服务和模板。


问题:

  1. 从Angular的角度来看,这是一种有效的方法 建筑?
  2. 还有另一种最常见的方法吗?我不想重新发明轮子,但是我找不到办法。

0 个答案:

没有答案