【发布时间】:2018-10-16 13:13:12
【问题描述】:
如何在没有任何数据绑定的情况下使用*ngFor 指令?
除了初始渲染之外,我不希望模型的任何更改反映在视图中,也不希望视图中的任何更改反映在模型中。
示例
@Component({
template: '<p *ngFor="let character of characters">{{ character }}</p>',
})
export class TestComponent {
public characters = ['a', 'b', 'c'];
}
如果我将一个额外的字符推到characters 数组上,它将在模板中呈现。
我不想要这个。我只希望它渲染一次(使用前 3 个字符),并且任何修改都不应该导致视图发生任何变化。
【问题讨论】:
-
你的意思是你想要一个“一次性”绑定吗?我不明白你的问题,你能提供更多关于你的目标的信息吗?
-
只需将初始检索的值分配给不同的变量并循环该变量..
-
@Moug 我更新了我的问题
-
@AshishRanjan 的答案是最简单的,否则,如果您希望所有组件都具有此行为,则可以将 changeDetection 设置为“OnPush”,并且仅在引用对象更改时绑定刷新,而不是值: changeDetection: ChangeDetectionStrategy.OnPush
-
@Moug:是的,对!如果 Danyg 打算使用 OnPush 变更检测策略,那么他的组件非常具体。 View 不会检测到任何变量的更改,除非引用发生更改。这也会影响该组件中使用的任何其他组件。
标签: angular data-binding ngfor