如果模板中存在视图子视图,我如何才能定义它。我正在使用这样的动态组件加载器......
viewContainer.directive.ts
@Directive({
selector: '[viewContainer]'
})
export class ViewContainer {
constructor(public viewContainerRef: ViewContainerRef) {}
}
component.ts 的一部分
@ViewChild(ViewContainer)
private viewContainer: ViewContainer;
private _postalMapComponent: any;
private set postalMapComponent(component: any) {
if(!component) {
return
}
let factory = this.resolver.resolveComponentFactory(component);
let viewContainerRef = this.viewContainer.viewContainerRef;
viewContainerRef.clear();
if(this._postalMapComponent)
this._postalMapComponent.destroy();
this._postalMapComponent = viewContainerRef.createComponent(factory);
}
private get postalMapComponent(): any {
return this._postalMapComponent;
}
这很好用
<ng-template viewContainer></ng-template>
在模板 html 文件中。
如果我在模板中使用这样的东西......
<div *ngIf="something">
<ng-template viewContainer></ng-template>
</div>
...并something
评估false
我遇到了一个未定义的错误
undefined is not an object (evaluating 'this.viewContainer ...
我怎么能解决这个问题?有没有办法只在组件中设置 ViewChild 如果它存在于模板中?