angular 4:一一加载组件

Mer*_*ony 1 asynchronous ionic-framework ionic3 angular

我正在使用基于 angular 4 框架的 Ionic 3。而且我需要知道我是否有多个子组件可以异步加载它们,一个一个:

  1. 加载父级;
  2. 加载第一个孩子;
  3. 当第一个孩子加载时,加载第二个孩子;
  4. 当第二个孩子加载时,加载第三个孩子
  5. 等等

例如,我有一个app.module.ts带孩子的父组件:

@NgModule({
declarations: [
    AppComponentPage
],
imports: [
    IonicPageModule.forChild(AppComponentPage),
    ChildOneComponentModule,
    ChildTwoComponentModule,
    ChildThreeComponentModule,
    ChildFourComponentModule,
],
entryComponents: [
    AppComponentPage
]})
export class AppComponentPageModule {}
Run Code Online (Sandbox Code Playgroud)

app.component.ts

import { Component } from '@angular/core';
//import all child components

@Component({
  selector: 'app-parent-component',
  template: `
      <child1-component></child1-component>
      <child2-component></child2-component>
      <child3-component></child3-component>
      <child4-component></child4-component>
  `
 })
 export class AppComponentPage {

    //HOW TO LOAD?

 }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 6

在您的每个子组件中,添加一个输出:

@Output
initialized = new EventEmitter<boolean>();
Run Code Online (Sandbox Code Playgroud)

并在您决定组件已初始化(或加载,如您的问题所述)时发出一个事件,从而可以显示下一个:

ngOnInit() {
  ...
  this.initialized.emit(true);
}
Run Code Online (Sandbox Code Playgroud)

在父组件中,有一个计数器:

counter = 0;
Run Code Online (Sandbox Code Playgroud)

每次初始化组件时递增计数器,并且在计数器允许显示组件之前不要显示组件:

<child1-component (initialized)="counter++"></child1-component>
<child2-component (initialized)="counter++" *ngIf="counter > 0"></child2-component>
<child3-component (initialized)="counter++" *ngIf="counter > 1"></child3-component>
<child4-component (initialized)="counter++" *ngIf="counter > 2"></child4-component>
Run Code Online (Sandbox Code Playgroud)