首页 > 解决方案 > Angular2 component constructor didn't called

问题描述

my demo app component's constructor did not called at app start:

demo component:

@Component({
  selector: 'app-demo-page',
  templateUrl: './index.component.html',
  styleUrls: ['./index.component.css']
})
export class DemoComponent implements OnInit {

  constructor() {
    console.log('constructor run');
  }

  ngOnInit() {
    console.log('oninit run');
  }
}

routing module:

const routes: Routes = [
  {
    path: 'demo',
    component: DemoComponent ,
    resolve: {
      data: DemoResolverService
    }
  },
  {
    path: '',
    component: AppComponent
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule {}

resolver service:

@Injectable({
  providedIn: 'root'
})
export class DemoResolverService implements Resolve<SomeData> {
  constructor(private logic: demoService) {}

  resolve(): Observable<SomeData> {
    console.log('dataresolver run');

    return this.logic.getAll();
  }
}

The resolver service constructor run successfully, and before navigation its called too. But the component not constructor not running. Is there any idea why its stop working? Thanks

标签: angularangular2-routing

解决方案


添加<router-outlet></router-outlet>app.component.html

工作演示

Angular 中的Router-outlet用作占位符,用于根据激活的组件或当前路由状态动态加载不同的组件


推荐阅读