Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2事件:keyup退出输入_Javascript_Events_Angular_Angular2 Template - Fatal编程技术网

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
    }
  }
})