我正在尝试设置一个标签系统,允许组件自己注册(带标题).第一个选项卡就像一个收件箱,有大量的操作/链接项可供用户选择,每个点击都应该能够在点击时实例化一个新组件.动作/链接来自JSON.
然后,实例化的组件将自己注册为新选项卡.
我不确定这是否是"最佳"方法?Sofar我见过的唯一指南是静态标签,这没有帮助.
到目前为止,我只有主要引导的标签服务在整个应用程序中持续存在,看起来像这样的东西.
export interface ITab { title: string; }
@Injectable()
export class TabsService {
private tabs = new Set<ITab>();
addTab(title: string): ITab {
let tab: ITab = { title };
this.tabs.add(tab);
return tab;
}
removeTab(tab: ITab) {
this.tabs.delete(tab);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
DynamicComponentBuilder会被使用吗?ng-content,但我找不到有关如何使用它的更多信息编辑:尝试澄清
将收件箱视为邮件收件箱,将项目作为JSON提取并显示多个项目.单击其中一个项目后,将创建一个新选项卡,其中包含该项操作"类型".然后类型是一个组件
Edit2:图片
我尝试搜索google和stackoverflow,但找不到答案。所以我的问题很简单:“我如何去除角度2、4中的当前分量”
例:
<div (click)="remove($event)">Remove Current Component</div>
remove($event) {
// this.destroy() ????
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要的是ComponentRef看到这个答案 ngOnDestroy(),它叫this.cmpRef.destroy():
ngOnDestroy() {
if(this.cmpRef) {
this.cmpRef.destroy();
}
}
Run Code Online (Sandbox Code Playgroud)
但是ComponentRef由于动态创建组件,他得到了应有的回报。
我有许多模块,我想懒惰加载到单个页面.它们可以加载到不同配置的多个页面中的任何一个页面中.它们可能非常重,所以我不希望它们最初都加载.路由器不适合这种情况.如何在没有路由器的情况下手动加载它们?