Попытка valueChanges выдает ошибку обнуления объекта (реактивные формы) - PullRequest
0 голосов
/ 25 апреля 2018

угловой 4 вопрос.

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

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

Итак, в конструкторе у меня есть formBuilder и сервис, который помогает мне создавать значенияиз которого я выбираю один для моего поля ввода.

Проблема в том, что когда я хочу поиграть с valueChanges, чтобы захватить введенное мной значение и что-то с ним сделать, я получаю «объект, возможно, нулевой»ошибка, хотя я принял некоторые меры предосторожности против объекта, являющегося нулевым.

Например: дополнительные условия и до этого, фактически определение myForm внутри initForm (так что наверняка он не может быть нулевым).

Любые быстрые указатели, пожалуйста и спасибо!

  constructor(private formBuilder: FormBuilder, private myService: MyService) {
  }

  ngOnInit() {
    this.initForm(this.formBuilder);
  }


 private initForm(formBuilder: FormBuilder): void {
    this.myForm = formBuilder.group({
      input1: ['', Validators.minLength(3)],
      input2: [{value: '', disabled: true}]
     });

    if (this.myForm) {
      if (this.myForm.get('input1')) {
        this.myForm.get('input1').valueChanges.subscribe(value => console.log(value));
        }
    }

  }

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018
 if (this.myForm) {
      if (this.myForm.get('input1')) {
       const variable = this.myForm.get('input1'); // create a variable 
        variable!.valueChanges.subscribe(value => console.log(value)); // use Non-null assertion operator(used in Typescript 2)
        }
    }

Поскольку компилятор не может на самом деле сказать, что эта переменная имеет значение null, нам нужно использовать оператор с ненулевым утверждением. Утверждаем, что его операнд не равен NULL и не определен.

0 голосов
/ 25 апреля 2018

может быть, вам следует сделать это

let input1 = this.myForm.get('input1');
if (input1 != null) {
    input1.valueChanges.subscribe(value => console.log(value));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...