Angular2 calling custom function after ngSwitch new view is created

There is no built-in support of calling a function when ngSwitch adds/removes elements.

I would create a directive that calls the function when created (for example in ngOnInit()) or emits an event where an event handler can be bound to, and apply it to the component that is added when the ngSwitch branch is enabled.

If ngSwitch adds a component you can implement it in this component as well (depends on your requirements)

update

    <ion-list (onCreate)="doSomething()" *ngSwitchCase="'list'">
       Listing
    </ion-list>
@Directive(selector: '[onCreate]')
export class OnCreate implements OnInit {
  @Output() onCreate:EventEmitter = new EventEmitter();

  ngOnInit() {
    this.onCreate.emit('dummy');
  }
}

Plunker example


You can also call a function when ion-segment is changed.

<ion-segment [(ngModel)]="homeSegment" (ionChange)="updatePage(homeSegment)">

and in your component a function like

updatePage(homeSegment) {
  if (homeSegment === 'map') {
    this.loadMap();
  }
}

Maybe this helps someone.