没有发现指令注释(某些服务)

时间:2016-07-08 13:15:57

标签: typescript angular angular2-services

在通过angular2的git存储库之后,经过长时间搜索堆栈溢出后,我需要了解两件事。 1)第一个是为什么我有这种类型的异常,我的.ts文件是这些:

DownloadDocuments.service.ts

import { Injectable } from '@angular/core'
import { Headers,Http,Response } from '@angular/http'
import { Observable } from 'rxjs/Observable'
import { Result } from '../components/downloads/documents/result'
import 'rxjs/add/operator/catch'
import 'rxjs/add/operator/map'
import 'rxjs/add/observable/throw'
@Injectable()
export class DownloadDocumentsService{
    constructor(private http:Http){}
    private url='http://someplace/;
    getResults(): Observable<Result[]>{
        return this.http.get(this.url)
            .map(this.extractData)
            .catch(this.handleError);
    }
    private extractData(res: Response) {
        let body = res.json();
        return body.data || { };
    }
    private handleError (error: any) {
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` :'Server error';
        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }
}

并将服务注入此组件

DocumentsArea.component.ts

import { Component,OnInit,Input } from '@angular/core'
import { Result } from './documents/result'
import { ResultComponent } from './documents/result.component'
import { DownloadDocumentsService } from '../../services/DownloadDocumentsService.service' 
@Component({
    selector:'documents-download',
    templateUrl:'app/components/downloads/documentsArea.component.html',
    styleUrls:['app/components/downloads/documentsArea.component.css'],
    directives:[ResultComponent,DownloadDocumentService]
})
export class DocumentsAreaComponent implements OnInit{
    documentsList: Result[];
    errore: string;
    private document:Result;
    mode='Observable'
    constructor(private downloadDocumentService: DownloadDocumentService){}
    getDocuments(){
        this.downloadDocumentService.getResults()
            .subscribe(
                documentsList=>this.documentsList=documentsList,
                error => this.errore=<any>error
            )
    }
    ngOnInit(){
        this.getDocuments();
    }
}

我得到的例外就是这个

  

错误:未捕获(在承诺中):在DownloadDocumentsService上找不到指令注释

2)如何记录角度2引发的可能异常?我是angular 2的新手(正如你从代码中看到的那样,实际上.ts文件的大部分内容包含开发人员指南中给出的相同代码,来自'HTTP客户端'一章)但对我来说错误信息是我得到的是非常通用的(我认为),因为我明白这意味着'DownloadDocumentsService缺少使它成为指令'的东西?!?即使这不是这个错误的真正含义,大多数人以非常不同的方式解决了这个问题,让我清楚地知道我不理解这个例外。那么这个错误的真正含义是什么?我什么时候可以调试它?

1 个答案:

答案 0 :(得分:2)

必须在组件的DownloadDocumentService属性中指定providers服务,而不是directives。后者仅适用于指令/组件。

以下是一个示例:

directives: [ResultComponent],
providers: [DownloadDocumentService]

要使用,directives属性中提供的类需要@Directive@Component装饰器来设置配置元数据。此级别不支持简单类。 @Injectable装饰器不提供类似的东西,并且“仅”能够将依赖项注入类......