Observable.subscribe () не работает в IE при изменении компонента в Angular 7 - PullRequest
0 голосов
/ 18 марта 2020

У меня есть две HTML кнопки «предыдущая» и «следующая». У меня есть разные вкладки (компоненты), к которым я перехожу, используя эти кнопки. Код работает, как и ожидалось, в Chrome и Firefox, но при нажатии следующих и предыдущих кнопок в IE или Edge появляется пустой экран.

Обработчик события кнопки «Далее»:

saveAndNextClick(form: FormGroup, section: string) {
  this.markFormGroupTouched(form);
  if (form) {
    if (section === 'lastsection') {
      this.sectionChangeService.change('schoolSection');
    } else {
      this.hideShowTabSection();
      this.selectedSectionGroup[section] = false;
    }
  }
  this.saveData(); 
  this.saveService.saveQuestion();
}

Шаблон

<div class="d-flex app-question-navigation justify-content-between">
  <a class="btn btn-secondary buttonSize (click)="previousClick(appSectionThree,'sectionTwo')">
    Previous
  </a>
  <span class="app-question-pagination">Section 3 of 8</span>
  <a class="btn btn-secondary buttonSize" (click)="saveAndNextClick(appSectionThree,'sectionFour')">
    Next
  </a>
</div>
</form>

component.ts

ngOnInit() {
  this.sectionChangeService.listen().subscribe((message: any) => {
    if (message.text === 'prvsparentdemosection') {
      this.saveAndNextClick(this.pdemographicsSectionFive, 'sectionFour');
    }
  });
}

Service:

```typescript
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';

@Injectable({ providedIn: 'root' })

export class SectionChangeService {
  private listner = new Subject<any>();

  change(message: string) {
    this.listner.next({ text: message });
  }

  clearListner() {
    this.listner.next();
  }

  listen(): Observable<any> {
    return this.listner.asObservable();
  }
}

1 Ответ

0 голосов
/ 18 марта 2020

Попробуйте использовать полифилы, они необходимы для IE & Edge, поскольку в них отсутствуют некоторые функции es6 / 7

Импортируйте это в файл polyfills.ts

import 'core-js/es7/array';
import 'core-js/es7/object';
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';`
...