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

angular2 формы наблюдаемые/события

На основе учебника Дэвида Иста (https://gist.github.com/davideast/0b7efc93e0ba9aaa446e). Я пытаюсь сделать так, чтобы Angular2 работал на примере очень крошечных форм.

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

версии lib: typescript 1.5.0-бета, Angular-2.0.0-28

Вот код машинописного текста:

/// <reference path="../../typings/angular2/angular2.d.ts" />
/// <reference path="../../typings/angular2/angular2_addons.d.ts" />
import {Component, View, bootstrap, Form, EventEmitter} from 'angular2/angular2';
import {FormBuilder, Validators, formDirectives, ControlGroup} from 'angular2/forms';
import {Inject} from 'angular2/di';

@Component({
  selector: 'mycmp',
  appInjector: [FormBuilder]
})
@View({
  template: '<form [ng-form-model]="myForm"><input type="text" ng-control="myText">{{myForm.controls.myText.value}}</form>',
  directives: [formDirectives],
})
export class MyCmp {
  myForm:ControlGroup;
  constructor(@Inject(FormBuilder) builder:FormBuilder) {
    this.myForm = builder.group({
        myText: ["someDefaultVal...", Validators.required]
    });

    this.myForm.controls.myText.valueChanges.subscribe(function (value) {
        console.log("changed value=" + value);
    }.bind(this));
  }
}

bootstrap(MyCmp);

К сожалению, я получаю TypeError: this.myForm.controls.myText.valueChanges.subscribe is not a function


  • вы пропустили импорт ReactiveFormsModule или rxjs/add/*? 25.08.2016

Ответы:


1

Этот сообщение в блоге в объяснение различий между старым двухсторонним подходом к связыванию и новым реактивным подходом в формах Angular 2. Для последнего он работает с некоторым потоком form.valueChanges, как показано ниже:

this.form.valueChanges
  .map((value) => {
      value.firstName = value.firstName.toUpperCase();
      return value;
  })
  .filter((value) => this.form.valid)
  .subscribe((value) => {
     console.log("Model Driven Form valid value: vm = " + JSON.stringify(value));
  });
05.04.2016

2

Я не смог найти ни одной функции-подписчика, поэтому воспользовался наблюдателем:

this.myForm.valueChanges.observer({next: (value) => this.address = value});

В данном случае «this.address» — это объект, представляющий данные myForm.

10.07.2015

3

Если вы просто хотите запускать какую-то функцию каждый раз, когда значение вашего ввода изменяется, вы можете сделать что-то вроде этого:

<input type="text" ng-control="myText" #mytext (keyup)="firechange($event,mytext)">

и в вашем компоненте

firechange($event, field){
    console.log(field.value);
}

И вам не нужно использовать @Inject, если у вас уже есть appInject (который, кстати, ушел в alpha29 (https://github.com/angular/angular/blob/master/CHANGELOG.md#breaking-changes). Это может быть просто:

constructor(builder: FormBuilder) {...}
02.07.2015
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

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

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

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

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

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

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


Для любых предложений по сайту: wedx@cp9.ru