通过 JSON 更新 Angular 动态组件

Posted

技术标签:

【中文标题】通过 JSON 更新 Angular 动态组件【英文标题】:Update Angular dynamic components through JSON 【发布时间】:2019-02-14 17:46:01 【问题描述】:

我在我的应用程序中使用 angular 5,在我的应用程序中我创建了各种嵌套的动态组件,这种嵌套可以达到 4 级。例如

<GP-Component>
    <parentCOmponent>
        <component>
            <sub-component></sub-component>
        </component>
    </parentCOmponent>
</GP-Component>

实际上它看起来像:

<GP-Component>
<parentCOmponent>
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ comp-2
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ comp-3
    <component>
        <div >
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ compo-4
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>

    //@ compo-5
    <component>
        <div>
            <div addSubComponent [config]="fewCOnfiguration"></div>
        </div>
    </component>
</parentCOmponent>

我通过 JSON 维护数据,所以当我最初传递 JSON 时,它会根据 JSON 中定义的属性创建所有内容,一切正常,但现在我应该在用户 A 的某个时间间隔后向用户 B 显示更新进行更改。

我的问题是我可以更新 JSON 并且也可以在父级别更新,但是如何使用更新的 JSON 来显示更改,因为我创建的所有内容都是动态的。

【问题讨论】:

【参考方案1】:

所以我得到了解决方案(感谢我的一位同事),他几天前在我的鞋子里,我正在写答案如果有人看起来相似或如果可以进一步改进它。

答案:

当我需要更新数据并在获取新数据时将其显示给用户 B(某种自动更新)时,我将新数据设置到服务中并:

this.ngOnDestroy();
//@ set data into a service
this.container.clear(); //@ container holding dynamic components
this.ngOnInit();

它工作正常。我只是担心我正在使用轮询从服务器获取数据以每 10 秒显示一次用户 B 更新,所以我将在一分钟内运行 6 次 ngOnInit 循环,我不确定这是否会变得昂贵执行,因为运行 ngOnInit 将重置所有内容,并且所有嵌套组件都将重新初始化。

期待有人提出更好的优化建议(除了将轮询时间缩短到 25-35 秒)

谢谢

【讨论】:

以上是关于通过 JSON 更新 Angular 动态组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular - 动态加载选项卡名称和组件

Angular - 动态组件渲染错误数据

Angular使用总结 --- 通过指令动态添加组件

Angular 4 中的可配置组件(动态类加载器)

Angular 4 - 为 Facebook 动态更新 Meta 标签(打开图表)

Angular2 - 将 ASYNC 数据传递给子组件