猿问

Angular DI错误 - EXCEPTION:无法解析所有参数

Angular DI错误 - EXCEPTION:无法解析所有参数

我在Angular中构建了一个基本的应用程序,但是我遇到了一个奇怪的问题,我不能将服务注入到我的一个组件中。它注入了我创建的其他三个组件中的任何一个。

首先,这是服务:

import { Injectable } from '@angular/core';@Injectable()export class MobileService {
  screenWidth: number;
  screenHeight: number;
  constructor() {
    this.screenWidth = window.outerWidth;
    this.screenHeight = window.outerHeight;
    window.addEventListener("resize", this.onWindowResize.bind(this) )
  }
  onWindowResize(ev: Event) {
    var win = (ev.currentTarget as Window);
    this.screenWidth = win.outerWidth;
    this.screenHeight = win.outerHeight;
  }}

它拒绝使用的组件:

import { Component, } from '@angular/core';import { NgClass } from '@angular/common';import { ROUTER_DIRECTIVES } from '@angular/router';import {MobileService} from '../';@Component({
  moduleId: module.id,
  selector: 'pm-header',
  templateUrl: 'header.component.html',
  styleUrls: ['header.component.css'],
  directives: [ROUTER_DIRECTIVES, NgClass],})export class HeaderComponent {
  mobileNav: boolean = false;
  constructor(public ms: MobileService) {
    console.log(ms);
  }}

我在浏览器控制台中遇到的错误是:

EXCEPTION:无法解析HeaderComponent的所有参数:(?)。

我在bootstrap函数中有服务,所以它有一个提供程序。我似乎能够毫无问题地将它注入我的任何其他组件的构造函数中。


小怪兽爱吃肉
浏览 612回答 3
3回答

繁星点点滴滴

从直接声明它的文件中导入它而不是桶。我不知道究竟是什么导致了这个问题,但我看到它多次提到(可能是某种循环依赖)。它也应该通过改变桶中出口的顺序来修复(不知道细节,但也被提到)

呼如林

除了之前给出的答案之外,当您的注射服务缺少实际@Injectable()装饰器时,似乎也会抛出此错误。因此,在调试循环依赖项和导入/导出的顺序之前,请检查您的服务是否实际已@Injectable()定义。这适用于当前的Angular最新版Angular 2.1.0。
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答