provider.ngAfterViewInit - это не функция в Angular, использующая ngIf? - PullRequest
0 голосов
/ 21 октября 2019

Есть компонент, который активируется ngIf:

 <filter-dialog *ngIf="isFilterOpen()"></filter-dialog>

Где:

  isFilterOpen() {
    return FilterService.isOpen;
  }

Класс компонента:

export class FilterDialogComponent implements AfterViewInit {
    ngAfterViewInit() {
    this.createFilterComponent();
  }
}

Почему я могу эту ошибку:

SkeletonComponent.html:13 ERROR TypeError: provider.ngAfterViewInit is not a function
    at callProviderLifecycles (core.js:32327)
    at callElementProvidersLifecycles (core.js:32292)
    at callLifecycleHooksChildrenFirst (core.js:32274)
    at checkAndUpdateView (core.js:44280)
    at callViewAction (core.js:44636)
    at execEmbeddedViewsAction (core.js:44593)
    at checkAndUpdateView (core.js:44271)
    at callViewAction (core.js:44636)
    at execComponentViewsAction (core.js:44564)
    at checkAndUpdateView (core.js:44277)

createFilterComponent is:

  createFilterComponent() {
    const concreteFilterForm = this.filterService.form;
    const concreteFilterComponent = FilterLinkReferenceDialogComponent;

    /* Factory angular */

    const factory = this.resolver.resolveComponentFactory(
      concreteFilterComponent
    );

    this.componentRef = this.viewContainerRef.createComponent(factory);
    this.componentRef.instance.form = concreteFilterForm;
  }

1 Ответ

1 голос
/ 21 октября 2019

Попробуйте установить для FilterService.isOpen значение true:

createFilterComponent() {        
    /* The code is omitted for the brevity */
    FilterService.isOpen = true;
}

Кроме того, попробуйте перезапустить приложение с помощью ng serve

...