在app.module.ts中声明的Ionic 2指令中的应用程序。
但是在Ionic 3(延迟加载)这个指令不起作用。 我尝试在组件模块中导入Directive,例如:
...
import { TabindexDirective } from '../../../app/tabindex.directive';
@NgModule({
declarations: [
...
TabindexDirective,
],
imports: [
...
],
exports: [
...
],
})
export class SignupModule {}
此代码工作正常,但随后我在另一个组件模块中导入此指令,我有错误:
Type GoComponent是2个模块声明的一部分: SignupModule和AddPageModule!请考虑将GoComponent移动到 导入的更高模块
如何修复它并在Ionic 3中使用指令?
答案 0 :(得分:2)
在我最近的项目工作中,同样的事情发生在我身上。 该问题的解决方案是在directives.module.ts中导入指令,例如:
import { NgModule } from '@angular/core';
import { XYZDirective } from './XYZ/XYZ';
@NgModule({
declarations: [XYZDirective],
imports: [],
exports: [XYZDirective]
})
export class DirectivesModule {}
并在您需要该指令的页面中导入 XYZDirective 。
答案 1 :(得分:1)
在Iular 3内部使用的Angular 2及以上版本中,指令或组件不能在两个模块中声明。
您需要创建一个公共模块,其中应声明需要在其他模块中重用的所有组件。 然后,您可以在要使用该组件的任何模块中导入此公共模块。
答案 2 :(得分:1)
在ionic -3中,组件中的声明指令已更改,实际上它将由模块本身绑定。
解决此问题的方法如下
解决方案-1
在一个模块中声明并导出所有指令,因此您可以在模块/离子页面中使用它
import { NgModule } from '@angular/core';
import { TabindexDirective } from '../../../app/tabindex.directive';
@NgModule({
declarations: [TabindexDirective],
imports: [],
exports: [TabindexDirective]
})
export class SharedDirectives {}
在您的模块中,您可以导入SharedDirectives
解决方案-2
在模块中绑定指令,然后使用 .forchild();
导入子组件import { TabindexDirective } from '../../../app/tabindex.directive';
@NgModule({
declarations: [
TabindexDirective,
],
imports: [
...
IonicPageModule.forChild(TabindexDirective)
],
})
export class SignupModule {}
答案 3 :(得分:0)
我最近遇到了完全相同的错误,除了使用Angular组件,尝试在--prod
模式下构建时。我终于通过从某些指令和组件中删除.module.ts
文件来解决这个问题。
我将您的问题标记为重复,因此请重定向到this link,以获得针对您的问题的多种解决方案。
答案 4 :(得分:0)
我不想复制我的答案,但这是一个想法:
import { IonicModule; IonicPageModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { MyComponent } from '../directives/my-directive/my-directive';
@NgModule({
imports: [
IonicModule.forRoot(MyApp),
IonicPageModule.forChild(MyComponent) // Here
],
declarations: [MyApp, MyComponent]
})