1
我在我的angular2应用程序中遇到以下问题。函数声明错误 - 意外的令牌。预期构造函数,方法,访问器或属性
意外的令牌。预期的构造函数,方法,访问器或属性为 。
对于实施我跟着下面的项目。
我不知道为什么我收到上述错误在我的代码。我根据上面的github链接中提供的代码进行编码。屏幕截图下方将显示错误出现的位置。
正如你所看到的,该关键字功能已经红由IDE下划线。我真的看不到我的代码中的语法问题(我来自Java背景,这是我的第一个Angular应用程序)
请指出我这里有什么问题以及如何纠正它。
这是我的完整代码:
import { Http, Response, Headers } from '@angular/http';
import { Injectable } from '@angular/core';
import { Tender } from './models/Tender';
import { Observable } from 'rxjs/Rx';
@Injectable()
export class TendersService {
private _endpointUrl: string = "http://127.0.0.1:8080/get-all";
constructor(private _http: Http) {
}
getAllTenders(): Observable<Tender[]> {
console.log("get all tenders in service");
let tenders = this._http
.get(this._endpointUrl)
.map(mapTenders)
.catch(handleError);
console.log('tenders.service.ts -> retrieved tenders = '+tenders);
return tenders;
}
function mapTenders(response: Response): Tender[] {
console.log('tender.service.ts -> mapTenders');
return response.json().map(toTender);
}
function toTender(r: any): Tender {
console.log('tender.service.ts -> toTender');
let tender = <Tender>({
id: r.id,
name: r.name,
description: r.description,
category: r.category,
district: r.district,
town: r.town,
imageUrls: r.imageUrls,
referenceNumber: r.referenceNumber,
addresses: r.addresses,
telNos: r.telNos,
dateTimePosted: r.dateTimePosted,
lastUpdateOn: r.lastUpdateOn
});
console.log('Parsed tender in service :', tender);
return tender;
}
function handleError(error: any) {
let errorMsg = error.message || `Yikes! There was was a problem with our hyperdrive device and we couldn't retrieve your data!`
console.error(errorMsg);
// throw an application level error
return Observable.throw(errorMsg);
}
}
消息说明了这一切。从类中声明你的函数(就像你的例子那样),或者让它们成为类的方法。如果他们不需要访问'this',你可以使它们成为静态方法。 –
@JBNizet谢谢。不要知道我看不到它。但是,那里的逻辑是什么?我不熟悉班级以外的职能。 Angular2中的方法和函数不是相同的吗? – vigamage
Angular与此无关。该语言称为TypeScript。而且,在这个问题上,它遵循与EcmaScript相同的规则。不,方法和功能不是一回事。一种方法与此相关。静态方法与定义的类绑定在一起。这些功能与课程无关。他们完全独立。那么他们为什么要在课堂上宣布呢? –