Angular2 NgForm valueChanges по-прежнему срабатывает при переходе на другую страницу

Я работаю над проектом Angular 4.x, и есть 2 страницы с правильно настроенной маршрутизацией.

На странице1 я подписался на valueChanges NgForm следующим образом:

this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

При загрузке страницы1 я вижу "Действительна ли форма myNgForm? false".

Однако, щелкнув ссылку для перехода на страницу 2, я понял, что myNgForm1.valueChanges был запущен снова, и теперь я вижу "Действителен ли myNgForm? true"

Любая идея, чтобы избежать срабатывания valueChanges myNgForm1 при переходе на другую страницу? Спасибо!


person Softhinker.com    schedule 19.07.2017    source источник
comment
Вы используете шаблонную форму или реактивную?   -  person Max Koretskyi    schedule 19.07.2017


Ответы (2)


Насколько я знаю, вам нужно сделать что-то вроде этого:

this.valueChangesSubscriber = this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

А потом в классе добавить:

ngOnDestroy() {
    this.valueChangesSubscriber.unsubscribe()
}
person Graham Fowles    schedule 19.07.2017

Отписаться в ngOnDestroy

this.subscription = this.myNgForm1.valueChanges.subscribe(data => { 
    console.log("Is myNgForm valid ? " + this.myNgForm1.valid); 
});

ngOnDestroy() {
  this.subscription.unsubscribe();
}
person Günter Zöchbauer    schedule 19.07.2017