我试图将Angular2与system.js和typescript一起使用。它到目前为止我一直在导出的接口工作正常,但是一旦我尝试导入枚举,它就会爆炸。在以下代码中,Card
工作正常,但当我导入Legend
时,我收到错误GET http://localhost:3000/shared/legend 404 (Not Found)
。
import {Component, OnInit} from 'angular2/core';
import {CardService} from './card.service';
import {Card} from '../../shared/card';
import {Legend} from '../../shared/legend';
@Component({
selector: 'cards-list',
templateUrl: 'app/cards-list.html',
providers: [CardService]
})
export class CardsListComponent implements OnInit {
public cards:Card[];
//using Legend is the problem!
public legendValues:String[] = [Legend[Legend.ARIANE]];
constructor(private _cardService:CardService) {
}
getCards() {
this._cardService.getCards(cards => this.cards = cards);
}
ngOnInit() {
this.getCards();
}
}
这是图例文件:
export enum Legend {
THE_RAPTOR,
LINZA,
ARIANE,
OZAN
}
为什么我无法导入普通枚举?
答案 0 :(得分:3)
到目前为止我一直在导出的接口工作正常,但是一旦我尝试导入枚举,它就会爆炸
接口是仅编译时构造,因此没有运行时影响。带有接口的文件未在运行时加载。但是,在运行时加载具有运行时内容的文件,例如classes
/ variables
/ enums
等,您将获得404。这是服务器设置错误。您需要允许加载这些JS文件。
答案 1 :(得分:1)
我有一个非常类似的问题,并最终通过在我的枚举之前导出一个'虚拟'类来修复它...
`
导出类L {};
export enum Legend { THE_RAPTOR, LINZA, 阿丽亚娜, OZAN }
...
从'../../shared/legend'导入{L,Legend}; `
不幸的是我不能说为什么这是必要的(虽然我看到没有课的枚举不允许为什么不这样做?!)但它帮助了我。
答案 2 :(得分:0)
在下面的代码中,我将演示如何 EXPORT 类( constClass )包含const列表可以在您的班级服务中使用。
-serviceAngularClass.js -
...
import {WsRessources} from "./constClass";
@Injectable()
export class PersonneService {...
public functionName():Observable<any>{
return this.updateRessource(WsRessources.BasePath+WsRessources.affectLeavingDate...);
}
}//end Class
-constClass.js -
export class WsRessources {
public static BasePath='personnes';
public static affectLeavingDate='/affectLeavingDate';
}