是否可以只将路由器插座作为主要组件?

时间:2017-06-05 08:17:01

标签: angular

目前我正在使用这种结构让我的路由器插座作为主应用程序运行:

@Component({
    selector: 'my-dummy-app',
    template: '<router-outlet></router-outlet>'
})

export class MyDummyApp {
}

是否可以删除虚拟应用程序?我没有任何成功。我已尝试将bootstrap留空,或将我的路由器组件保留在entry集合中,但似乎没有模块配置可用。

Angular似乎倾向于有一个主要组件来引导。

2 个答案:

答案 0 :(得分:2)

通常你会在AppModule中引导AppComponent,其模板在某些地方是+ <router-outlet>。之后,您将初始化AppModule作为入口点。

如果没有主要组件作为切入点,我无法想象你怎么能告诉角度应该是应用程序的切入点。

我会说它不可能。当您在AppModule中的bootstrap中声明一个组件时,angular将在index.html中查找其css选择器。如果没有找到 - &gt;错误。另一方面,如果你没有在app模块的bootstrap部分内声明任何内容 - &gt;错误。此外,如果您尝试在应用程序模块中引导RouterOutet指令

  

Uncaught Error: RouterOutlet cannot be used as an entry component.

NgModule FAQ的以下引用似乎也支持这一点:

  

您可以将子组件嵌入顶部组件的模板中。或者,通过为顶层组件提供<router-outlet>来使其成为路由主机。定义子路由并让路由器将模块组件加载到该出口。

答案 1 :(得分:0)

我想实现类似的目的,并被重定向到该线程。我想要的是将组件(例如,Component1)呈现为默认设置。然后,基于Component1中的少量交互,我想用另一个组件(例如Component2)替换

解决方案:配置到Component1的默认路由,使用Component1中的[routerLink]重定向到Component2。 在app.component.html中,仅包含<router-outlet></router-outlet>,没有其他内容。

原因:HTML页面必须必须具有html,head和body标签才能呈现,该标签包含在index.html中。然后,您有一个<app-root>的选择器,您可以在其中显示<router-outlet>

相关问题