Ionic指令3

时间:2017-07-19 08:52:21

标签: angular ionic-framework ionic2

在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中使用指令?

5 个答案:

答案 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]
})

原始答案:https://stackoverflow.com/a/47253126/1311952