如何声明利用FormsModule和ReactiveFormsModule的共享组件

时间:2020-08-05 14:46:23

标签: angular components declaration

这是我的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在模块之间是可共享的,但是它们所依赖的反应形式不再起作用。具体来说,我得到一个错误阅读-错误错误:名称为'[name]'的表单控件没有值访问器。您会看到我在FormsModule中留下了注释掉的ReactiveFormsModuleleads.module,因为我也尝试将它们导入到leads.module中解决此问题。

对于如何解决此问题的任何建议或指导,将不胜感激。谢谢!

0 个答案:

没有答案