我正在尝试构建一个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等)来编译组件?
这是我正在做的事情的简化示例,因此在这里似乎有些复杂。 有人知道如何实现我的需求?谢谢!