如何从其他模块导入服务

时间:2018-02-13 12:03:37

标签: javascript angular ionic-framework ionic2

在我的应用程序中,我有不同的模块。我希望他们有一个共同的导航服务。但是,当我在模块的组件中调用服务时,我收到错误。

Can't resolve all parameters for PersonalPage: (?).

可能是什么问题?

app.module.ts

import { NavService } from "../shared/nav-service/nav.service";
import { PersonalPageModule } from '../pages/personal/personal.module';

@NgModule({
     ...
     imports: [
         ...
         PersonalPageModule,
         ...
     ],
     providers: [
         ...
         NavService,
         ...
     ]
     ...
});

personal.ts

import { NavService } from "../../shared/nav-service/nav.service";

@IonicPage({
  name: 'page-personal',
  segment: 'personal/:hash' 
})

@Component({
  selector: 'page-personal',
  templateUrl: 'personal.html' 
})

export class PersonalPage implements OnDestroy{
  constructor(private navService: NavService) {
  }
}

nav.service.ts

import { Injectable } from '@angular/core';
import { PersonalPage } from '../../pages/personal/personal';

@Injectable()
export class NavService {}

1 个答案:

答案 0 :(得分:0)

服务对于服务所在模块中定义的模块中的所有组件都是不可取的

@NgModule({
    declarations: [
        AppComponent,  //<--this can access to the service
        MyHeaderComponent    ],  //<--this one too
    imports: [
        ...
        Module2Module,  //<--all the components defined in this module too
        Module3Module,   //<--all the components defined in this module too
        AppRoutingModule,
        DndModule.forRoot()
    ],
    providers: [MyService]
})

如果Module2Module导入Submodule3,那么也是Submodule 3中定义的所有组件。并且Module2Module或Module3Module不包含该服务。这是服务在一个独特的模块中被声明为提供者

您的服务无需导入任何想要使用它的模块或组件,是想要使用必须导入然后在构造函数中使用的服务的组件