【发布时间】:2017-07-26 21:17:53
【问题描述】:
假设我要绑定一个深度嵌套的对象图:
<div>{{model.rootProperty}}</div>
<div>
<div>{{model.some.deeply.nested.property.with.a.donut.name}}</div>
<div>{{model.some.deeply.nested.property.with.a.donut.calories}}</div>
<div>{{model.some.deeply.nested.property.with.a.donut.deliciousness}}</div>
</div>
我不想重复访问器链。我知道我可以在我的视图模型上公开一个属性,但我更喜欢某种方式来创建本地上下文。我想要的语法是这样的:
<div>{{model.rootProperty}}</div>
<div [binding-context]="model.some.deeply.nested.property.with.a.donut">
<div>{{name}}</div>
<div>{{calories}}</div>
<div>{{deliciousness}}</div>
</div>
我该怎么做?
我尝试创建一个组件,其模板只包含<ng-content></ng-content>,但是以这种方式转置的内容仍然具有组件父组件的上下文。
我知道我可以将内部内容包装在 <template> 中并在我的组件中使用模板出口,但这比我更喜欢的标记,而且似乎 *ngFor 不需要这个。
这可能吗?
【问题讨论】:
-
似乎更简单的解决方案是使用“计划 A”并将属性添加到您的视图/模型。毕竟这是它的目的。 :-)
-
是的,但我觉得如果我的别名在模板中是明确的,它会更具可读性/可维护性。有时这种模式可以嵌套,我想在其中引用嵌套属性的一些嵌套属性,并且具有多个视图模型属性不会使关系在模板中可见。
-
是的,您需要将 html 包装在
ng-template中才能做到这一点