Angular:无法将服务导入Component,但其模块可以

时间:2018-05-10 09:32:13

标签: angular

我在UserModule中有一个带有UserDataService的项目。我想在另一个Module的Component中使用这个UserDataService。我可以将它导入EntryModule并将其列为提供者,没问题。但在我的EntryListComponent中,我无法导入它。 Visual Code告诉我文件不存在,即使我100%确定路径是正确的。

是否有任何类型的设置阻止我在其他模块中找到的组件中使用我的UserDataService?

这是文件树的一小部分:

src
 |- app
     |- entry
     |    |- entry.module.ts // has UserDataService as provider
     |    |- ..other stuff..
     |    |- entry-list
     |         |- entry-list.component.ts // can't import UserDataService???
     |
     | - user
           |- user.module.ts
           |- user-data.service.ts
           |- ..other stuff..

这里是EntryListComponent中的相关代码:

import { Component, OnInit } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { HttpErrorResponse } from '@angular/common/http';
import { Entry } from '../entry.model';
import { EntryDataService } from '../entry-data.service';
//import { UserDataService } from '../../user/user-data.service';
import { distinctUntilChanged, debounceTime, map, filter, debounce } from 'rxjs/operators';

@Component({
  selector: 'app-entry-list',
  templateUrl: './entry-list.component.html',
  styleUrls: ['./entry-list.component.css']
})
export class EntryListComponent implements OnInit {

  private _entries : Entry[];

  constructor(private _entryDataService : EntryDataService/*,
  private _userDataService : UserDataService*/) { }

  // ...

}

我也注意到,突然,git也没有跟踪EntryListComponent的更改......令人沮丧。但也许这是一个相关的问题。

1 个答案:

答案 0 :(得分:1)

应该没有理由将服务导入组件。修改了我的设置快照以反映您的设置。希望它有所帮助。

user.module.ts

import { UserDataService } from './user/user-data.service';
...
providers: [
  { provide: 'userDataService', useClass: UserDataService }
],

app.module.ts

...
import { UserModule } from './user/user.module';

入门list.component.ts

...
constructor(
    @Inject('userDataService') private userDataService,
) {}