2016-05-23 213 views
1

我有一个根组件,它是AppComponent,我已经在根组件(ProductService)中注入了一个服务,我试图在其中一个子组件(ProductList)中解析该服务。我在发生错误角2中的等级依赖注入

没有为ProductService提供服务! (ProductListComponent - > ProductService)

这里是根组件和儿童组件的代码

import { 
 
    Component 
 
} 
 
from 'angular2/core' 
 
import { 
 
    ProductListComponent 
 
} 
 
from './products/product-list.component' 
 
import { 
 
    ProductService 
 
} 
 
from './products/product.service' 
 

 
/** 
 
* AppComponent 
 
*/ 
 

 
@ 
 
Component({ 
 
    selector: 'pm-app', 
 
    template: ` 
 
    <div> 
 
     <h1>{{PageTitle}}</h1> 
 
     <pm-products></pm-products> 
 
    </div> 
 
    `, 
 
    providers: [ProductService], 
 
    directives: [ProductListComponent] 
 

 
}) 
 
export class AppComponent { 
 
    PageTitle: string = "Acme Product Management"; 
 
}

ProductListComponent

@Component({ 
 
    selector: 'pm-products', 
 
    templateUrl: 'app/products/product-list.component.html', 
 
    styleUrls: ['app/Products/products-list.component.css'], 
 
    pipes: [ProductFilterPipe], 
 
    directives: [StarComponent] 
 
}) 
 
export class ProductListComponent implements OnInit { 
 
    PageTitle: string = "Product List"; 
 
    imageWidth: number = 50; 
 
    imagemargin: number = 2; 
 
    showImage: boolean = false; 
 
    filterBy: string; 
 
    products: IProduct[]; 
 
    
 
    constructor(public _productService:ProductService){ 
 
     
 
    } 
 
    }

我对角度2 DI的理解是,如果服务是以root身份注入的,它会注入到它的子组件中。我需要做额外的事吗?

+0

恕我直言,所有看起来不错。你可以在'ProductListComponent'的构造函数中'new ProductService()'而不是注入它吗?只是为了检查这是否会产生更有用的错误消息。 –

+0

@GünterZöchbauer我试过了,我可以使用它。另外我已经将Provider参数添加到产品列表组件,甚至工作正常。只有孩子的根组件存在问题。 – satish

+0

我不知道您的意思是“将Provider参数添加到产品列表”。 –

回答

0

您在ProductListComponent中有import { ProductService } from './products/product.service',对吧?