Angular2: как редактировать поле

Я создаю приложение со списком контактов, в котором пользователь может добавить контакт, используя поле ввода, как мы обычно делаем для получения данных, я закончил с добавлением и удалением контакта, но я не понимаю, как я буду редактировать добавленный контакт, нажав кнопку рядом с добавленный контакт. Ситуация будет заключаться в том, что я нажимаю кнопку редактирования, и контакт будет в поле ввода, где я отредактирую контакт и нажму кнопку обновления, и отредактированный контакт вернется в список контактов, я могу получить -ve голосование, но я действительно хочу посмотреть, как это произойдет, например, вернуться в поле ввода для редактирования.

Вот что я написал для этого: он принимает идентификатор в качестве аргумента

updateparent(value){
    for(var i = 0; i < this.array.length ; i++){
    console.log('inside for');
    if(value == this.array[i].idobj){

        break;    
    }
}

Что дальше, если? :)

HTML родителя:

<h1 class= "text-center">ToDo App</h1>
<div class = "form-group">
<lable>Task</lable>
<input name = "tasks" #task class = "form-control" >
<lable>Detail</lable>
<input type = "text" name = "taskdetail" #detail class = "form-control"  >
<button type = "submit" class  = "btn btn-default" 
(click) = "addtask(task, detail)">Add Task</button>
<child-component *ngFor = "#todo of array" 
[taskobject] = "todo"   (childevent) = "deleteparent($event)">
Loading...   </child-component>
</div> 

HTML дочернего компонента для отображения данных, полученных от родителя:

{{taskobject.taskobj}}
{{taskobject.detailobj}}
{{taskobject.idobj}}
<button type = "button" class = "btn btn-default" 
(click) =   "deletetask(taskobject.idobj)">Delete</button>
<button type = "button" class = "btn btn-defualt"
(click) = "updatetask(taskobject.idobj)">Update</button>

`

person blackHawk    schedule 06.02.2016    source источник
comment
Лучше использовать для этого ng-model. Можете ли вы также предоставить html?   -  person Parth Trivedi    schedule 06.02.2016
comment
В Angular2 нет ng-model, только ngModel. @flyingHawk, пожалуйста, исправьте теги, чтобы было понятно, о чем вопрос.   -  person Günter Zöchbauer    schedule 06.02.2016
comment
@parth Я включил html-файл   -  person blackHawk    schedule 06.02.2016
comment
@GünterZöchbauer Я включил html-файл   -  person blackHawk    schedule 06.02.2016
comment
@flyingHawk Ваш текущий код + описание неясны. Настолько сложно найти, чтобы было легко понять, чтобы другие могли вам помочь.   -  person Parth Trivedi    schedule 06.02.2016
comment
Не нужно передавать task здесь "addtask(task, detail)", если вы используете ng-model="taskdetail.task", вы получите доступ к значениям из контроллера, например $scope.taskdetail. и получить доступ к одному значению как $scope.taskdetail.task. @flyinghawk   -  person Parth Trivedi    schedule 06.02.2016
comment
еще одна вещь, которую вы передаете task,detail в качестве аргументов, вместо этого вы должны отправить task.value and detail.value, иначе он отправит HTMLInputElement методу.   -  person Pardeep Jain    schedule 06.02.2016


Ответы (1)


если ваш contact number - это всего лишь одно значение в массиве, тогда сопоставьте существующее значение для контакта, и когда вы получили значение индекса (или i) для совпадения, просто splice это значение из массива, а затем обновите новое значение в массиве, используя метод push . как это:

updateparent(value){
    for(var i = 0; i < this.array.length ; i++){
    console.log('inside for');
    if(value == this.array[i].idobj){
        this.array.splice(i,1);
        var newContact = value
        this.array.push(value);     
        break;    
    }
}

надеюсь, это поможет вам! если не предоставить код plnkr, я исправлю его!

person Pardeep Jain    schedule 06.02.2016
comment
А как насчет того, чтобы попасть в поле ввода для редактирования, в файл HTML - person blackHawk; 06.02.2016
comment
Я включил html файл - person blackHawk; 06.02.2016
comment
не могли бы вы предоставить plnkr для вашего кода? мне было бы легко разобраться с ошибкой! - person Pardeep Jain; 06.02.2016
comment
Можно обновить запись, добавив новое значение в массив. Для просмотра вы должны использовать ng-model="taskdetail.taskdetail", поэтому в вашей области при обновлении установите $scope.taskdetail = value. это также обновит представление. @flyinghawk - person Parth Trivedi; 06.02.2016
comment
во-первых, есть ngModelвместо ng-model, во-вторых, нет $scope ... и если мы говорим о области видимости, то всякий раз, когда ваш массив обновляется, он автоматически устанавливает новое значение и повторяет новый набор значений, не так ли? - person Pardeep Jain; 06.02.2016
comment
@PardeepJain проверьте мой комментарий, я упомянул ng-model. - person Parth Trivedi; 06.02.2016