【问题标题】:Can't resolve parameters for a component from inside an injectable无法从可注射的内部解析组件的参数
【发布时间】:2017-05-07 23:25:07
【问题描述】:

我正在尝试将一个组件导入到我的可注入服务中,但似乎我做错了什么。类似情况下的其他页面也会发生这种情况。目前的情况似乎发生了,因为我试图导入 SessionService 的 LoginPage 需要 SessionService,它在某处闻起来有无限循环的味道。除了在可注入的 SessionService 中不包括页面组件之外,我应该如何解决它的任何想法?

我当前的架构是构建的,因此如果会话不存在,我需要重定向到登录页面。 Ionic NavController 需要一个页面组件来推送到导航堆栈。欢迎使用其他解决重定向问题的方法,但我也想了解为什么会发生这种情况。

Uncaught Error: Can't resolve all parameters for LoginPage: (?, ContentService).

session.service.ts

@Injectable()
export class SessionService {
    constructor(private content: ContentService) {}
}

login.page.ts

@Component({
  templateUrl: './login.page.html'
})
export class LoginPage {
  constructor(public session: SessionService,
              public content: ContentService) {
  }

对于那些请求它的人,content.service.ts

@Injectable()
export class ContentService {
  constructor(private authHttp: AuthHttp) {
  }
}

app.module.ts

@NgModule({
  declarations: [
    LoginPage
  ],
  entryComponents: [
    LoginPage
  ],
  providers: [
    SessionService,
    ContentService
  ]
})
export class AppModule {
}

我正在使用 Angular 2.2.1 和 Ionic 2.0.0-rc.4。

【问题讨论】:

  • 你定义ContentServiceSessionService一样吗?
  • 为什么要将组件导入服务??
  • 从上面的代码中看不出 SessionService 被定义为提供者。 @Injectable 装饰器是不够的。目前尚不清楚我试图导入 SessionService 的 LoginPage 需要 SessionService 发生的位置和原因。请不要跳过... 的必要细节。
  • 我没有将它定义为提供者,并且在我的项目中也没有。也许我应该,但是如果没有在 Component() 装饰器中定义提供者,其他一切都可以正常工作。另外,我将原始问题编辑得更准确。如果我需要进一步澄清,请告诉我。
  • 哦,对了。没有意识到提供应用程序模块。我在声明中没有任何内容。但是应用程序模块并不与众不同。将其添加到问题中。

标签: angularjs parameters components injectable


【解决方案1】:

content.service.ts

@Injectable()
export class ContentService {...}

添加这个也喜欢SessionService

【讨论】:

  • 对不起,我不明白你的意思。
猜你喜欢
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
相关资源
最近更新 更多