动态(深度)属性的角度绑定

时间:2019-03-30 19:07:11

标签: angular typescript data-binding lodash

我正在尝试构建一个Angular应用,其中在运行时生成对象。该对象的结构是完全未知的,它可以获得任何类型的属性,甚至是嵌套的。现在,我希望Angular在该对象的特定(嵌套)属性上使用其绑定机制。

假设对象是:

const dynamicObject={
  propA: 7,
  propB: 3,
  propC: {
    propD: 5,
    propE: 1
  }
}

并且我想使用“ propC.propD”绑定HTML:

<input matInput [value]="dynamicObject.propC.propD">

现在,我想在运行时更改绑定的道具,比如说“ propA”。因此,我正在使用lodash-“ get()”函数(https://lodash.com/docs/#get)。

打字稿:

const actPath='propA';

HTML:

<input matInput [value]="_.get(dynamicObject, actPath)">

起作用的是,只有在propA的值更改时,角度才会触发该组件中的更改。这里的问题是get()方法一直被调用,这浪费了性能。

还可以使用方括号(“ []”)使属性动态化:

<input matInput [value]="dynamicObject[actPath]">

但这不适用于诸如dynamicObject ['propC.propD']之类的嵌套道具。也许以后有一种方法可以使用正确的插入路径(componentFactory等)来编译组件?

这是我正在做的事情的简化示例,因此在这里似乎有些复杂。 有人知道如何实现我的需求?谢谢!

0 个答案:

没有答案