Почему вложенные компоненты не имеют доступа к унаследованным свойствам? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть проект, в котором у меня есть набор компонентов, которые расширяют друг друга и наследуют свойства от потомка к родителю ([базовый класс] Сертификация -> [абстрактный класс] Приложение -> [нижняя часть наследования] Individual_Types). Это все работает нормально, но нижний компонент содержит несколько вложенных компонентов, и я хотел бы поделиться некоторыми из этих унаследованных свойств с вложенными компонентами.

Если я пытаюсь использовать одну из этих унаследованных переменных в привязке свойства, я получаю сообщение об ошибке «Ошибка TypeError: Невозможно прочитать свойство Id» из неопределенного ». но если я вместо этого установлю переменную-член в компоненте Individual_type и установлю для нее наследуемое свойство в конструкторе, тогда я могу использовать эту переменную-член в привязке без ошибок.

В компоненте Приложения:

export abstract class ApplicationComponent extends CertificationComponent implements OnInit {

  protected BaseAppType: AppType;
  protected BaseAppId: string;

  // Injected Services
  protected AppRouter: Router;
  protected AppServ: ApplicationService;


  constructor(private AppInject: Injector,
              private AppCertId: string, 
              private AppTypeId: string,
              private AppSumId: number) { 
    super(AppInject, AppCertId);
    this.AppRouter = AppInject.get(Router);
    this.AppServ = AppInject.get(ApplicationService);
    // Default AppType - BaseAppType actually set in ngOnInit
    this.BaseAppType = new AppType();
  }

Пример наследования:

export class NewBcabaComponent extends ApplicationComponent implements OnInit {

    private ParentAppType: AppType;

  public constructor(NewInject: Injector) { 
    super(NewInject, '2', '1', 11);
    this.ParentAppType = this.BaseAppType;
  }

Пример шаблона с вложенным компонентом

Это работает:

<div class="open-card-BG" *ngIf="CurrentPage == 1">
    <instructions [InstAppType]="ParentAppType"></instructions>
  </div>

Это не:

  <div class="open-card-BG" *ngIf="CurrentPage == 1">
    <instructions [InstAppType]="BaseAppType"></instructions>
  </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...