Подписка вызывается дважды ⇐ Javascript
-
Гость
Подписка вызывается дважды
Я пытаюсь создать форму для отправки данных, но когда я подписываюсь на услугу, подписка выполняется дважды. Сначала с нулевыми данными, а затем с фактическими данными.
Component.ts
addBook() { this.errorMessage = ноль; this.fireService.getBook(this.bookDetails.isbn).subscribe(data => { console.log('подписка на вызов'); если (ноль != данные) { this.dbox.open(DialogBoxComponent, { data: { title: 'Error', content: 'Книга уже присутствует в библиотеке. Выберите «Редактировать книгу», чтобы изменить данные», кнопка: false } }); this.errorMessage = 'Книга уже присутствует в библиотеке. Выберите «Редактировать книгу», чтобы изменить детали'; } еще { this.fireService.addBook(this.bookDetails); this.dbox.open(DialogBoxComponent, { data: { title: «Успех», содержание: «Книга добавлена в базу данных», кнопка: false } }); this.router.navigateByUrl('/add-book'); } }); } Service.ts
getBook(id) { console.log('вызывается firebase get book'); return this.db.doc(`/books/${id}`).valueChanges(); } Ниже приведено изображение консоли Chrome. Это показывает, что подписка вызывается дважды, но не служба Firebase.
Журналы консоли Chrome: изображение, нажмите для просмотра
журналы консоли Chrome
вызов книги Firebase Get Book подписаться позвонил подписаться позвонил Пожалуйста, помогите
Я пытаюсь создать форму для отправки данных, но когда я подписываюсь на услугу, подписка выполняется дважды. Сначала с нулевыми данными, а затем с фактическими данными.
Component.ts
addBook() { this.errorMessage = ноль; this.fireService.getBook(this.bookDetails.isbn).subscribe(data => { console.log('подписка на вызов'); если (ноль != данные) { this.dbox.open(DialogBoxComponent, { data: { title: 'Error', content: 'Книга уже присутствует в библиотеке. Выберите «Редактировать книгу», чтобы изменить данные», кнопка: false } }); this.errorMessage = 'Книга уже присутствует в библиотеке. Выберите «Редактировать книгу», чтобы изменить детали'; } еще { this.fireService.addBook(this.bookDetails); this.dbox.open(DialogBoxComponent, { data: { title: «Успех», содержание: «Книга добавлена в базу данных», кнопка: false } }); this.router.navigateByUrl('/add-book'); } }); } Service.ts
getBook(id) { console.log('вызывается firebase get book'); return this.db.doc(`/books/${id}`).valueChanges(); } Ниже приведено изображение консоли Chrome. Это показывает, что подписка вызывается дважды, но не служба Firebase.
Журналы консоли Chrome: изображение, нажмите для просмотра
журналы консоли Chrome
вызов книги Firebase Get Book подписаться позвонил подписаться позвонил Пожалуйста, помогите
Мобильная версия