Angular 2基於Web組件。最簡單的方法(如你所說的「簡單化」)是使用路線和組件。 您也可以通過在html中使用指令來加載組件。例如:
@Component({
selector: 'my-component', // directive name
templateUrl: './app/my.component.html',
directives: []
})
export class MyComponent {}
@Component({
selector: 'root-component', // directive name
directives: [MyComponent],
template: '<my-component></my-component>',
})
export class myComponent {}
如果您修改模板中包含
<my-component>
動態它將動態加載的組件。這不是最佳做法。
對於角度2有一個dynamic component loader,但這不像使用路由或指令那麼簡單。它將創建一個Component的實例並將其附加到位於另一個Component實例的Component View內的View Container。
有了它,你可以使用:
@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鏈接),可以在其中選擇提供供應商配置噴油器爲此組件實例調配。
希望這會有所幫助。