gpt4 book ai didi

javascript - angular2 RC5 中 dynamicComponentLoader 的替代方案?

转载 作者:数据小太阳 更新时间:2023-10-29 04:53:02 26 4
gpt4 key购买 nike

我正在 RC5 中创建一个 angular2 应用程序,我想在其中动态加载组件。

在 RC1 中,我使用 dynamicComponentLoader 做了同样的事情:

@Component({
moduleId: module.id,
selector: 'generic-component',
templateUrl: 'generic.component.html',
styleUrls: ['generic.component.css']
})
export class GenericComponent implements OnInit {
@ViewChild('target',{read:ViewContainerRef}) target;
@Input('component-name') componentName:string;
@Input('component-info') componentInfo:string;
@Input('component-model') componentModel:Object;

keysRegister:string[]=[
'users',
'employee'
];
componentNames:string[]=[
'UserComponent',
'EmpComponent'
];

constructor(private dcl:DynamicComponentLoader) {}

ngOnInit() {
}

ngAfterViewInit(){
let componentIndex=this.keysRegister.indexOf(this.componentName);
this.dcl.loadNextToLocation(StandardLib[this.componentNames[componentIndex]],this.target)
.then(ref=>{
ref.instance.componentModel=this.componentModel;
});
console.log("GenericComponent...... "+this.componentName+" Loaded");

}

}

每当我想加载我会做的组件时:

<div *ngIf="columnModel" style="border:1px solid orange">
<generic-component
[component-name]="columnModel.componentName" <!-- I will pass *users* here -->
[component-model]="columnModel.componentModel"
[component-info]="columnModel.componentInfo"
></generic-component>
</div>

我尝试使用 componentResolver,但无法使其正常工作。任何输入?谢谢。

最佳答案

RC5 中,您需要使用 Compiler 中的 compileComponentAsync() 方法。

这是一个简单的例子:

constructor(private _comp: Compiler) {}

ngAfterViewInit(): void {
this._comp.compileComponentAsync(this.componentModel).then(a => this.target.createComponent(a));
}

这是一个来自地雷图书馆的完整示例:

https://github.com/flauc/ng2-simple-components/blob/master/src/modal/modal.component.ts

关于javascript - angular2 RC5 中 dynamicComponentLoader 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39177779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com