Angular 2基于Web组件。最简单的方法(正如您所说的“保持简单”)是使用路由和组件。您还可以通过在HTML中使用指令来简单地加载组件。例如:
@Component({
selector: 'my-component',
templateUrl: './app/my.component.html',
directives: []
})
export class MyComponent {}
@Component({
selector: 'root-component',
directives: [MyComponent],
template: '<my-component></my-component>',
})
export class myComponent {}
如果您修改模板以动态包含
<my-component>
,则可以动态加载组件。但这不是最佳实践。
Angular 2有一个
动态组件加载器,但它不像使用路由或指令那样简单。它将创建一个组件实例,并将其附加到另一个组件实例的组件视图内的视图容器中。
使用它,您可以使用:
@Component({
selector: 'child-component',
template: 'Child'
})
class ChildComponent {
}
@Component({
selector: 'my-app',
template: 'Parent (<child id="child"></child>)'
})
class MyApp {
constructor(dcl: DynamicComponentLoader, injector: Injector) {
dcl.loadAsRoot(ChildComponent, '#child', injector);
}
}
bootstrap(MyApp);
生成的DOM如下所示:
<my-app>
Parent (
<child id="child">Child</child>
)
</my-app>
在此组件实例中,您可以选择提供提供程序以配置注入器的选项(请参见上面的angular2链接)。
希望这能帮到您。