Angular2创建和使用服务

时间:2016-04-13 19:10:41

标签: angular

我第一次尝试Angular2并且在创建服务时遇到了一些问题。实际上在使用那些服务。我创建了以下数据服务

import {Injectable} from 'angular2/core';
import {recentActivity} from './app/components/recentActivity/model'

@Injectable()
export class RecentActivityDataService {

    loadList() {
        const items: Array<recentActivity> = [];
        items.push({
            url: 'From Service',
            name: 'From Service'
        });

        return items;
    }

}

然后在一个组件中我有以下内容:

import {Component, OnInit} from 'angular2/core';
import {recentActivity} from './model';
import {RecentActivityDataService} from './dataService';

@Component({
    selector: 'recentActivity',
    templateUrl: './app/components/recentActivity/recentActivity.html',
    providers: [RecentActivityDataService]
})
export class RecentActivity implements OnInit {

    items: Array<recentActivity> = [];

    constructor(private dataService: RecentActivityDataService) {

    }

    ngOnInit() {
        this.items = this.dataService.loadList();
    }

}

当我启动此组件时,我收到以下错误消息

  

&#34;未捕获(承诺):无法解析所有参数   &#39; RecentActivity&#39;(?)。确保所有参数都已装饰   使用Inject或具有有效的类型注释以及&#39; RecentActivity&#39;   用Injectable装饰。&#34;

我不知道我在这里失踪了什么,因为我的服务上有@Injectable,在我的组件中我把它列为提供者。但是在构造函数中它仍然没有说它无法解决这个问题。

在app.Component中我有以下

import {Component} from 'angular2/core';
import {StandardNavigation} from './navigation/standard';
import {RecentActivity} from './components/recentActivity/recentActivity';

@Component({
    selector: 'cranalytics',
    templateUrl: './app/main.html',
    directives: [StandardNavigation, RecentActivity]
})
export class AppComponent {

}

我尝试了以下更改。在我的主要引导AppComponent中: 自举(AppComponent);

在AppComponent中,我已将服务作为提供者放在那里

import {Component} from 'angular2/core';
import {StandardNavigation} from './navigation/standard';
import {RecentActivity} from './components/recentActivity/recentActivity';
import {RecentActivityDataService} from './components/recentActivity/dataService';

@Component({
    selector: 'cranalytics',
    templateUrl: './app/main.html',
    directives: [StandardNavigation, RecentActivity],
    providers: [RecentActivityDataService]
})
export class AppComponent {

}

在最近的活动中,我导入了数据服务

import {Component, OnInit, Inject, forwardRef} from 'angular2/core';
import {recentActivity} from './model';
import {RecentActivityDataService} from './dataService';

@Component({
    selector: 'recentActivity',
    templateUrl: './app/components/recentActivity/recentActivity.html',
})
export class RecentActivity implements OnInit {

    items: Array<recentActivity> = [];

    constructor(  private dataService: RecentActivityDataService) {

    }

    ngOnInit() {
        this.items = this.dataService.loadList();
    }

}

但是这给了我同样的错误信息

1 个答案:

答案 0 :(得分:2)

尝试将recentActivity依赖项放在bootstrap()中,这样所有服务都可以访问它而无需在任何地方导入。