Angular 2在路由器插座中设置默认内容

dal*_*ale 7 angular

我想在路由器插座内设置一些默认文本,直到它被填充.

我有一个父组件,将在该页面上的路由器插座中显示子路由组件.

单击时,有2个按钮将使用子组件填充路由器插座.如何将内容放置在路由器插座内部,例如."单击选项以显示数据",然后单击该按钮后此消息将清除,子组件将显示在路由器插座中?

<div class="container pt-3">
    <div class="clearfix">
        <div class="btn btn-outline-success float-left"
            routerLink="/unpaid/people">
            View People
        </div>
        <div class="btn btn-outline-success float-right"
            routerLink="/unpaid/bills">
            View Bills
        </div>
    </div>
</div>
<router-outlet>Click an options to display the data</router-outlet>
Run Code Online (Sandbox Code Playgroud)

编辑这里是我的路线

path: 'unpaid', component: UnpaidBillsComponent,
    children: [
      {path: 'people', component: UnpaidPeopleComponent},
      {path: 'bills', component: UnpaidBillListComponent}
    ]
Run Code Online (Sandbox Code Playgroud)

Laz*_*vić 11

路由器插座内的默认文本,直到填充完毕

首先,你的假设是错误的,内容不是插插座内,而是插插座下面.


您无法在模板中设置默认内容,但可以设置包含默认内容的默认路由.只需使用path: ''并使用component"默认"模板即可.


使用您需要的"默认"模板创建组件:

@Component({template: `Default template here`})
export class DefaultTemplateComponent {}
Run Code Online (Sandbox Code Playgroud)

并将其添加到您的路线.

children: [
  {path: '', component: DefaultTemplateComponent},
  {path: 'people', component: UnpaidPeopleComponent},
  {path: 'bills', component: UnpaidBillListComponent},
]
Run Code Online (Sandbox Code Playgroud)


小智 8

在模板中:

<p *ngIf="showDefaultMessage">Click an options to display the data</p>
<router-outlet (activate)="toggleDefaultMessage(false)" (deactivate)="toggleDefaultMessage(true)"></router-outlet>
Run Code Online (Sandbox Code Playgroud)

然后在组件中只需切换“showDefaultMessage”属性:

private showDefaultMessage = true; // default state

toggleDefaultMessage(state: boolean) {
    this.showDefaultMessage = state;
}
Run Code Online (Sandbox Code Playgroud)

  • 你可以说我是老派,但我更喜欢这种实现方式。尽管我根本不会声明回调方法;您可以直接在模板中取消设置`showDefaultMessage`:`&lt;router-outlet (activate)="showDefaultMessage=false"&gt;` (2认同)