Angular 9 IVY Привязки ленивых компонентов не работают - PullRequest
2 голосов
/ 13 апреля 2020

Директивы, такие как ngIf, ngClass, ngStyle, не работают в лениво загруженном компоненте (введено в Angular 9).

core.js:12626 Can't bind to 'xxx' since it isn't a known property of 'xxx'.

The единственное связывание, которое мне удалось заставить это работать, - что-то вроде: [style.color]="color". Ленивая загрузка комплекта веб-пакета js работает нормально, если нет привязки или имеется просто привязка как [style.color]="color".

Загруженный компонент Lazy не объявлен в NgModule и загружается как таковой

 async lazy1() {
    this.viewContainerRef.clear();
    const { LazyComponent } = await import("./lazy.component");
    this.viewContainerRef.createComponent(
      this.cfr.resolveComponentFactory(LazyComponent)
    );
  }

Полный пример (по какой-то причине не может быть запущен в стеке): https://stackblitz.com/edit/angular-zyp3wm

Это можно воспроизвести поэтапно, выполнив статья ниже https://johnpapa.net/angular-9-lazy-loading-components/ Вам просто нужно добавить ngIf где-нибудь в одном из ленивых компонентов, чтобы получить проблему, с которой я столкнулся.

1 Ответ

1 голос
/ 14 апреля 2020

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

Я написал сообщение в блоге о будущем автономных компонентов в мире Angular Плющ через несколько месяцев go - вы можете найти его здесь . Это может помочь вам понять дополнительную перспективу NgModule и каковы затраты (CD с руководством, другой инжектор и т. Д. c ...)

...