如何让子路由在 AngularDart 中工作?

How to make child routes work in AngularDart?

我创建了一个小型存储库来解决我的问题:https://github.com/zegkljan/angular-dart-router-test

应用程序的功能(或应该执行的功能)

在 "home" 页面上有一个项目列表。您可以单击将您带到项目本身视图的项目。在项目视图中,您有两个按钮,单击它们会在按钮正下方显示 basic/advanced 项目的详细信息。

技术观点

AppComponent(根组件)有 <router-outlet> 用于显示子组件,该子组件是 ItemListComponent(显示列表,在路径 /items) 或显示项目本身的 ItemComponent(在路径 /items/:id 上)。项目列表中的 link 使用 [routerLink] 导航到 ItemComponent,顶部的 home link 导航到 ItemListComponent .

ItemComponent 有自己的 <router-outlet> 和一组路径,其部分是项目的路径(即 /items/:id)。这些路径是 /basic/advanced,它们与项目的路径相关(因此基本详细信息的完整路径将是 /items/:id/basic)。

什么问题

单击 basic/advanced 按钮时,路由器 returns NavigationResult.INVALID_ROUTEnavigate() 方法(因此没有导航),即使 url传递给 navigate()(在调用 navigate() 之前打印)是正确的。如果您 clone/download 存储库和 运行 应用程序,请打开浏览器控制台并观察。

我做错了什么,或者我对 AngularDart 路由器和子路由的工作方式有什么误解?

您在此处 ItemComponent 的指令列表中缺少 RouterOutlet 指令(或包含 RouterOutletrouterDirectives):https://github.com/zegkljan/angular-dart-router-test/blob/master/lib/src/item/item_component.dart#L23