使用事件发射器时无法 运行 我的 Angular 2 应用程序
Unable to run my Angular 2 application when using Event Emitters
我 运行 遇到一个问题,在添加使用事件发射器的服务后,我的应用程序将不再加载。我得到的错误如下:
"SyntaxError: expected expression, got '<'
Evaluating http://localhost:3000/node_modules/angular2/ts/src/facade/async
Error loading http://localhost:3000/app/main.js" angular2-polyfills.js:138:14
SyntaxError: expected expression, got '<'
我的 Main.ts 文件,我在其中进行应用程序引导,如下所示:
import {bootstrap} from "angular2/platform/browser"
import {provide} from "angular2/core";
import {ROUTER_PROVIDERS} from "angular2/router"
import {AppComponent} from "./app.component"
import {LocalStorageService} from "./core/localstorage.service";
import {PersistenceService} from "./core/persistence.service";
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
LocalStorageService,
provide(PersistenceService, {useExisting: LocalStorageService})
]);
我使用事件发射器的服务如下所示:
import {Injectable, Output} from "angular2/core";
import {EventEmitter} from "../../node_modules/angular2/ts/src/facade/async";
@Injectable()
export class GlobalActionsService {
@Output() saveSettings: EventEmitter<any> = new EventEmitter();
@Output() loadSettings: EventEmitter<any> = new EventEmitter();
doSave() {
this.saveSettings.emit(null);
}
doLoad() {
this.loadSettings.emit(null);
}
}
最后,我的 index.html 看起来像这样:
<html>
<head>
<!-- Set the base href for routing -->
<base href="/">
<title>MyApp</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 1. Load stylesheets -->
<link rel="stylesheet" type="text/css" href="./public/bootstrap/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="./public/css/custom.css">
<!-- 2. Load libraries -->
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<!-- 3. Configure SystemJS -->
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/main').then(null, console.error.bind(console));
</script>
</head>
<!-- 4. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
我不确定我的问题是否与我引导应用程序的方式、我对事件发射器的使用或其他完全不同的东西有关...如果有人可以阐明问题可能是什么在此,不胜感激!
你需要这样导入EventEmitter
(来自Angular2的核心模块):
import {Injectable, Output, EventEmitter} from "angular2/core";
我 运行 遇到一个问题,在添加使用事件发射器的服务后,我的应用程序将不再加载。我得到的错误如下:
"SyntaxError: expected expression, got '<'
Evaluating http://localhost:3000/node_modules/angular2/ts/src/facade/async
Error loading http://localhost:3000/app/main.js" angular2-polyfills.js:138:14
SyntaxError: expected expression, got '<'
我的 Main.ts 文件,我在其中进行应用程序引导,如下所示:
import {bootstrap} from "angular2/platform/browser"
import {provide} from "angular2/core";
import {ROUTER_PROVIDERS} from "angular2/router"
import {AppComponent} from "./app.component"
import {LocalStorageService} from "./core/localstorage.service";
import {PersistenceService} from "./core/persistence.service";
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
LocalStorageService,
provide(PersistenceService, {useExisting: LocalStorageService})
]);
我使用事件发射器的服务如下所示:
import {Injectable, Output} from "angular2/core";
import {EventEmitter} from "../../node_modules/angular2/ts/src/facade/async";
@Injectable()
export class GlobalActionsService {
@Output() saveSettings: EventEmitter<any> = new EventEmitter();
@Output() loadSettings: EventEmitter<any> = new EventEmitter();
doSave() {
this.saveSettings.emit(null);
}
doLoad() {
this.loadSettings.emit(null);
}
}
最后,我的 index.html 看起来像这样:
<html>
<head>
<!-- Set the base href for routing -->
<base href="/">
<title>MyApp</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 1. Load stylesheets -->
<link rel="stylesheet" type="text/css" href="./public/bootstrap/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="./public/css/custom.css">
<!-- 2. Load libraries -->
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<!-- 3. Configure SystemJS -->
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/main').then(null, console.error.bind(console));
</script>
</head>
<!-- 4. Display the application -->
<body>
<my-app>Loading...</my-app>
</body>
</html>
我不确定我的问题是否与我引导应用程序的方式、我对事件发射器的使用或其他完全不同的东西有关...如果有人可以阐明问题可能是什么在此,不胜感激!
你需要这样导入EventEmitter
(来自Angular2的核心模块):
import {Injectable, Output, EventEmitter} from "angular2/core";