NgSwitch 指令

ngSwitch实际上包括两个指令,一个属性指令和一个结构指令。 它非常类似于JavaScript和其他编程语言中的switch语句,但是在模板中。

  1. @Component({
  2. selector: 'app-root',
  3. template: `
  4. <div class="tabs-selection">
  5. <app-tab [active]="isSelected(1)" (click)="setTab(1)">Tab 1</app-tab>
  6. <app-tab [active]="isSelected(2)" (click)="setTab(2)">Tab 2</app-tab>
  7. <app-tab [active]="isSelected(3)" (click)="setTab(3)">Tab 3</app-tab>
  8. </div>
  9. <div [ngSwitch]="tab">
  10. <app-tab-content *ngSwitchCase="1">Tab content 1</app-tab-content>
  11. <app-tab-content *ngSwitchCase="2">Tab content 2</app-tab-content>
  12. <app-tab-content *ngSwitchCase="3"><app-tab-3></app-tab-3></app-tab-content>
  13. <app-tab-content *ngSwitchDefault>Select a tab</app-tab-content>
  14. </div>
  15. `
  16. })
  17. export class AppComponent {
  18. tab: number = 0;
  19. setTab(num: number) {
  20. this.tab = num;
  21. }
  22. isSelected(num: number) {
  23. return this.tab === num;
  24. }
  25. }

View Example

这里我们看到ngSwitch属性指令附加到一个元素。 该表达式绑定到指令定义什么将在 switch 指令中进行比较。 如果绑定到ngSwitchCase的表达式匹配给予ngSwitch的表达式,那么将创建这些组件,并销毁其他组件。 如果没有匹配的情况,则会创建与其绑定的ngSwitchDefault的组件,其他组件将被销毁。 注意,可以使用ngSwitchCase来匹配多个组件,在这些情况下,将创建所有匹配的组件。 由于组件被创建或销毁,请注意这样做的成本。