如何从另一个模块导入服务



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

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 {}

一个服务对于在该模块中定义的所有组件中的所有组件都可以分配。

@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导入subsodule3,则在子模块3中定义的所有组件。和Module2Module或Module3Module不包括服务。这就是该服务在唯一模块中宣布为提供商

您的服务不需要导入任何要使用的模块或组件,是要使用必须使用然后导入并在constructor中使用的服务的组件

最新更新