Javascript Angular2事件:keyup退出输入
我有一个绑定到组件属性的输入元素,该属性应该在我更改输入字段中的文本时更新 到目前为止,我的代码是:Javascript Angular2事件:keyup退出输入,javascript,events,angular,angular2-template,Javascript,Events,Angular,Angular2 Template,我有一个绑定到组件属性的输入元素,该属性应该在我更改输入字段中的文本时更新 到目前为止,我的代码是: <input type="text" #updatetext [value]="item.name" (keyup)="updateItem(item.$key, updatetext.value)" /> 因此,数据本身是:items:FirebaseListObservable(请参见“更改传播”)。我假设您正在使用*ngFor创建输入 如果updateItem()修改了*ng
<input type="text" #updatetext [value]="item.name" (keyup)="updateItem(item.$key, updatetext.value)" />
因此,数据本身是:
items:FirebaseListObservable(请参见“更改传播”)。我假设您正在使用*ngFor
创建输入
如果updateItem()
修改了*ngFor
迭代的数组,则可能会重新创建元素,这就是元素失去焦点的原因(它现在是另一个元素)
简单版本(取决于数据的具体情况,这可能不起作用)
然后在*ngFor
中使用itemsCopy
是的,我使用的是*ngFor。似乎合乎逻辑。你知道我该如何解决这个问题吗?请提供更多细节。updateItem
在做什么。数据是什么样子的*ngFor
正在迭代。更新问题,这足够清楚吗?谢谢你的帮助。:)除了维护数组的副本并从FirebaseListObservable
更新其值,并将副本传递到*ngFor
之外,我看不到一个简单的解决方案。在代码中如何做到这一点?你能更新你的答案吗?
updateItem(key: string, newText: string) {
this.items.update(key, { name: newText });
}
items.subscribe(response => {
for(item in response) {
var found = this.itemsCopy.find((copy) => copy.name == item.name);
if(found.length) {
found[0].value = item.value
}
}
})