我正在学习Angular 2。 我已使用以下模板创建了一个组件。
<h1>My component</h1>
<placeholder?></placeholder?>
根据组件中的状态,我想显示不同的子组件而不是占位符标签。那可能吗?怎么样?
例如:假设我已将一项服务注入我的组件中。如果此服务返回1,我想显示ComponentOne,并且我希望显示其他组件的服务中的所有其他值。
答案 0 :(得分:0)
您可以使用DynamicComponentLoader。
有关如何使用它的示例,请参阅Angular 2 dynamic tabs with user-click chosen components。我想链接答案中使用的包装器也适用于你。
答案 1 :(得分:0)
对要显示的每个组件使用 * ngIf :
<component1 *ngIf="service.value1"></component1>
<component2 *ngIf="service.value2"></component2>
答案 2 :(得分:0)
我建议使用*ngIf
来应用您的条件以及动态组件加载器。
您也可以关注此plnkr以获得更多参考。
Dynamic Component Loader Example
您需要做的就是在要加载组件的div上应用*ngIf
指令。
例如。
//our root app component
import {Component, View, DynamicComponentLoader, ElementRef } from 'angular2/angular2'
@Component({
selector: 'dc',
template: '<b>Some template</b>'
})
class DynamicComponent {}
@Component({
selector: 'my-app',
template: `
<div *ngIf="your condition">
<div #container></div>
</div>
`
})
export class App {
dynamicComponentLoader: DynamicComponentLoader;
constructor(dynamicComponentLoader: DynamicComponentLoader, elementRef: ElementRef) {
this.dynamicComponentLoader = dynamicComponentLoader;
dynamicComponentLoader.loadIntoLocation(DynamicComponent, elementRef, 'container');
}
}