Как объявить общие компоненты, использующие FormsModule и ReactiveFormsModule - PullRequest
0 голосов
/ 05 августа 2020

Вот как выглядит мой leads.module, без разделения каких-либо компонентов между другими модулями, и все работает, как ожидалось, без ошибок.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';

import { LeadsPageRoutingModule } from './leads-routing.module';
import { LeadsPages } from '../_pages';
import { LeadsComponents, CreateCustomerComponents } from 'src/components/_components';


@NgModule({
  imports: [
    CommonModule,
    IonicModule,
    LeadsPageRoutingModule,
    FormsModule,
    ReactiveFormsModule
  ],
  declarations: [
    ...LeadsPages,
    ...LeadsComponents,
    ...CreateCustomerComponents
  ]
})
export class LeadsModule { }

Я бы оставил его в покое, если бы мог, но мне нужно использовать CreateCustomerComponents в другом модуле для использования на другой странице в приложении. Я не могу просто объявить CreateCustomerComponents в двух разных модулях, потому что компоненты могут быть объявлены только один раз в рамках проекта. Итак, я создаю новый create-customer-shared.module, который выглядит так:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { CreateCustomerComponents } from 'src/components/_components';


@NgModule({
  imports: [CommonModule, FormsModule, ReactiveFormsModule],
  declarations: [...CreateCustomerComponents],
  exports: [...CreateCustomerComponents]
})
export class CreateCustomerSharedModule { }

Затем я обновляю свой leads.module до:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';

import { LeadsPageRoutingModule } from './leads-routing.module';
import { LeadsPages } from '../_pages';
import { LeadsComponents } from 'src/components/_components';
import { CreateCustomerSharedModule } from 'src/modules/create-customer-shared.module';


@NgModule({
  imports: [
    CommonModule,
    IonicModule,
    LeadsPageRoutingModule,
    // FormsModule,
    // ReactiveFormsModule,
    CreateCustomerSharedModule
  ],
  declarations: [
    ...LeadsPages,
    ...LeadsComponents
  ]
})
export class LeadsModule { }

На этом этапе CreateCustomerComponents разделяются между модулями, НО реактивные формы, от которых они зависят, больше не работают. В частности, я получаю сообщение об ошибке - ОШИБКА Ошибка: нет средства доступа к значению для элемента управления формы с именем: '[имя]'. Вы можете видеть, что я оставил закомментированные FormsModule и ReactiveFormsModule в leads.module, потому что я пытался импортировать их в leads.module, но не смог решить эту проблему.

Мы будем очень признательны за любые предложения или рекомендации по решению этой проблемы. Спасибо!

...