如何使用 systemjs 和 Angular2 导出打字稿枚举?
How to export typescript enum with systemjs and Angular2?
我正在尝试将 Angular2 与 system.js 和打字稿一起使用。到目前为止,它对于我一直在导出的接口一直运行良好,但是一旦我尝试导入一个枚举,它就会全部崩溃。在下面的代码中,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
}
为什么我不能导入普通枚举?
It's been working fine for the interfaces I've been exporting so far, but as soon as I try to import an enum it all blows up
接口是一个仅编译时构造,因此没有运行时影响。具有接口的文件未在运行时加载。然而,带有运行时内容 的文件 classes
/variables
/enums
等在运行时加载,你会得到 404。这是服务器设置错误。您需要允许加载这些 JS 文件。
我有一个非常相似的问题,并最终通过在我的枚举之前导出 'dummy' class 来修复它...
`
导出 class L{};
导出枚举图例{
THE_RAPTOR,
林扎,
阿丽亚娜
奥赞
}
...
从'../../shared/legend'导入{L, Legend};
`
不幸的是,我不能说为什么这是必要的(尽管我看到评论说不允许没有 class 的枚举,为什么不呢?!)但它帮助了我。
在下面的代码中,我将演示如何 EXPORT class (constClass) 包含可在您的 class 服务中使用的常量列表。
-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';
}
我正在尝试将 Angular2 与 system.js 和打字稿一起使用。到目前为止,它对于我一直在导出的接口一直运行良好,但是一旦我尝试导入一个枚举,它就会全部崩溃。在下面的代码中,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
}
为什么我不能导入普通枚举?
It's been working fine for the interfaces I've been exporting so far, but as soon as I try to import an enum it all blows up
接口是一个仅编译时构造,因此没有运行时影响。具有接口的文件未在运行时加载。然而,带有运行时内容 的文件 classes
/variables
/enums
等在运行时加载,你会得到 404。这是服务器设置错误。您需要允许加载这些 JS 文件。
我有一个非常相似的问题,并最终通过在我的枚举之前导出 'dummy' class 来修复它...
`
导出 class L{};
导出枚举图例{ THE_RAPTOR, 林扎, 阿丽亚娜 奥赞 }
...
从'../../shared/legend'导入{L, Legend}; `
不幸的是,我不能说为什么这是必要的(尽管我看到评论说不允许没有 class 的枚举,为什么不呢?!)但它帮助了我。
在下面的代码中,我将演示如何 EXPORT class (constClass) 包含可在您的 class 服务中使用的常量列表。
-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';
}