WedX - журнал о программировании и компьютерных науках

Значение не отображается для поля ввода с использованием односторонней привязки angular2

Цель: получить набор значений на основе раскрывающегося списка и поместить их в скрытые поля ввода для включения в мою модель;

Относительный HTML:

<select class="selectFoo" (change)="onSelect($event.target.value)" name="FooName" ngModel>
            <option selected="selected">--Select--</option>
            <option *ngFor="let foo of foos" [value]="foo.ID">{{foo.Name}}
</option>
</select>
<input type="hidden" [value]="fooAddress" name="FooAddress" ngModel/>

В приведенном выше коде я вызвал функцию OnSelect для получения данных о выбранном файле foo. foos заполняются с помощью вызова веб-сервиса. Вот фрагмент из моего файла ts.

import { Component, OnInit } from '@angular/core';

import { Foo } from './model';

import { DataService } from './data.service';


@Component({
  moduleId: module.id,
  selector: 'add-on',
  templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
  foos : Foo[];

  selectedFoo: Foo;
  fooAddress: string;

  onSelect(fooID){
      this.selectedFoo = null;
      for(var i = 0; i < this.foos.length; i++)
      {
        console.log(this.foos[i].ID);
        if(this.foos[i].ID == fooID){
          this.selectedFoo = this.foos[i];
          this.fooAddress = this.selectedFoo.Address.toString();
        }
      }
    }
   }

Первоначально я пытался одним способом привязать свое значение к selectedFoo, но я получал сообщение об ошибке, указывающее, что значение моего адреса не было определено. Я заметил, что могу установить значение, равное selectedFoo, и это не приведет к ошибке. Итак, я создал новую переменную, для которой было задано значение fooAddress на основе выбранного файла foo. Я не получаю значения, хотя, просматривая код, я вижу, что он имеет значение.

Как я могу заполнить свое значение, чтобы использовать его в своей модели? Дайте мне знать, если мне нужно предоставить что-то еще.

Спасибо!


Ответы:


1

Если я правильно понимаю, что вам нужно, то сработает что-то вроде этого:

<select name="FooName" [(ngModel)]="selectedFoo">
  <option>--Select--</option>
  <option *ngFor="let foo of foos" [ngValue]="foo" >{{foo.Name}}</option>
</select>
<input type="hidden" [value]="selectedFoo?.Address" name="FooAddress" />

//Assuming your 'foo' items are e.g. { ID: 1, Name: 'Hello', Address: '123 Hello St'}

Здесь вы можете привязать свойство Address элемента selectedFoo непосредственно к вашему скрытому полю ввода, вместо того, чтобы обрабатывать событие (change).

17.10.2017
  • Это замечательно! Спасибо. В итоге я решил это с помощью formgroup. Таким образом, мне не нужно было создавать скрытые поля, и я мог просто свободно заполнять свою модель. Это было основано на предложении друга. Я хотел увидеть, есть ли способ, который имеет отношение к этому посту. Так что спасибо тебе! 17.10.2017
  • Отлично, не беспокойтесь - да, я не был уверен, зачем вам нужны скрытые поля ввода, я не использовал их в своей недавней работе с формами Angular. В любом случае рад, что у вас все заработало! 18.10.2017
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]